如何逃避价值中发现的分隔符 - 猪脚本?

时间:2015-06-08 10:47:00

标签: apache-pig

在pig脚本中,我想找到一种方法来逃避数据中的分隔符,这样它就不会被解释为额外的列。例如,如果我使用冒号作为分隔符,并且我有一个值为“foo:bar”的列,我希望将该字符串解释为单个列而不让加载器在中间拾取逗号。

3 个答案:

答案 0 :(得分:0)

您可以尝试http://pig.apache.org/docs/r0.12.0/func.html#regex-extract-all

A = LOAD 'somefile' AS (s:chararray);
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(s, '(.*) : (.*)'));

可能必须调整正则表达式。

答案 1 :(得分:0)

似乎Pig将输入作为字符串,它不是那么聪明,无法确定数据是什么或不是什么。

Pig Storage适用于Strong Tokenizer。所以,如果你想做像

这样的事情

 a = LOAD '/abc/def/file.txt' USING PigStorage(':');

似乎没有解决你的问题。但是如果我们可以编写自己的PigStorage()方法,我们可能会遇到一些解决方案。

我会尝试发布代码来解决此问题。

答案 2 :(得分:0)

你可以使用STRSPLIT(字符串,正则表达式,限制);对于基于分隔符的列拆分。