使用Pig Latin将“3”转换为3

时间:2010-12-08 16:04:31

标签: csv hadoop apache-pig

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:9)

如何仅使用REPLACE删除"

例如:

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

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

然后你可以GROUPSUM

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

答案 1 :(得分:6)

TOKENIZE函数会在被认为是单词分隔符的各种字符上拆分一个字符串,其中一个是引号。因此,如果您将“3”标记为中间项,那么它应该只有3个。

答案 2 :(得分:3)

您可以编写一个UDF来剥离它周围的引号或使用JacobM的方法。

但是,之后,您应该将chararray '3'投射到int(int)$1(int)myvalue。这样您就可以使用sum

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