6

我读入了一个 csv 文件,其中包含带有如下数字的字段:“3”。我可以使用 PigLatin 将此字段从“3”转换为 3 吗?我需要它来使用 SUM() - 函数。

谢谢你的帮助!

4

3 回答 3

9

"只需用REPLACE删除呢?

例如:

data =
    LOAD 'data.txt' AS (num:CHARARRAY);

numbers =
    FOREACH data
    GENERATE
        (INT) REPLACE(num, '\\"', '');

然后你可以GROUPSUM

一个优点是您可以将返回的字符串直接转换为数字(无需处理包)。REGEX_EXTRACT也可以用来做同样的事情。

于 2011-01-11T19:17:59.990 回答
6

TOKENIZE函数将在被认为是单词分隔符的各种字符上拆分字符串,其中一个是引号。所以如果你标记“3”并取中间项,它应该只是 3。

于 2010-12-08T16:13:22.590 回答
3

您可以编写一个去掉引号的 UDF,或者使用 JacobM 的方法。

但是,之后,您应该将chararray '3'转换为int:(int)$1(int)myvalue。这样你就可以使用sum.

http://pig.apache.org/docs/r0.5.0/piglatin_reference.html#Cast+Operators

于 2010-12-08T19:33:00.517 回答