我读入了一个 csv 文件,其中包含带有如下数字的字段:“3”。我可以使用 PigLatin 将此字段从“3”转换为 3 吗?我需要它来使用 SUM() - 函数。
谢谢你的帮助!
我读入了一个 csv 文件,其中包含带有如下数字的字段:“3”。我可以使用 PigLatin 将此字段从“3”转换为 3 吗?我需要它来使用 SUM() - 函数。
谢谢你的帮助!
"
只需用REPLACE删除呢?
例如:
data =
LOAD 'data.txt' AS (num:CHARARRAY);
numbers =
FOREACH data
GENERATE
(INT) REPLACE(num, '\\"', '');
然后你可以GROUP
和SUM
。
一个优点是您可以将返回的字符串直接转换为数字(无需处理包)。REGEX_EXTRACT也可以用来做同样的事情。
该TOKENIZE
函数将在被认为是单词分隔符的各种字符上拆分字符串,其中一个是引号。所以如果你标记“3”并取中间项,它应该只是 3。
您可以编写一个去掉引号的 UDF,或者使用 JacobM 的方法。
但是,之后,您应该将chararray '3'
转换为int
:(int)$1
或(int)myvalue
。这样你就可以使用sum
.
http://pig.apache.org/docs/r0.5.0/piglatin_reference.html#Cast+Operators