我读了一个csv文件,其中包含带有这样数字的字段:“3”。 我可以用PigLatin将这个字段从“3”转换为3吗?我需要它来使用SUM() - 函数。
感谢您的帮助!
答案 0 :(得分:9)
如何仅使用REPLACE删除"
?
例如:
data =
LOAD 'data.txt' AS (num:CHARARRAY);
numbers =
FOREACH data
GENERATE
(INT) REPLACE(num, '\\"', '');
然后你可以GROUP
和SUM
。
一个优点是您可以将返回的字符串直接转换为数字(无需处理行李)。 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