PIG REGEX_EXTRACT ALL功能 - >没有结果

时间:2014-07-16 07:21:53

标签: apache-pig

我已经遇到了几个小时的问题。我有一个带有JSON字符串的.csv文件。该.csv中的每一列都包含一个包含多个JSON对象的字符串。我在PigStorage中导入了几个列。到目前为止工作。然后我尝试提取具有以下形式的JSON对象:

  

[{" tmestmp":" 2014-05-14T07:01:00""值":0,"质量" :1},{" tmestmp":" 2014-05-14T07:01:00.02""值":10,"质量&#34 :4},{" tmestmp":" 2014-05-14T07:01:00.04""值":17,"质量&# 34;:9},{" tmestmp":" 2014-05-14T07:01:00.06""值":75,"质量& #34;:6},{" tmestmp":" 2014-05-14T07:01:00.08""值":63,"质量":9}];

这是一栏。

Regex_Extract_All函数不适用于以下代码行。有没有人对此有所了解?我总是收到空的结果。这是我的代码:

 A = LOAD '/user/hue/test.csv' USING PigStorage(';') AS (timestamp, mv1, mv2,mv3,mv4,mv5); --using five columns
 B= foreach A generate mv1,mv2,mv3,mv4,mv5; --removing the timestamp in the first column, not needed anymore
 C= foreach B generate REGEX_EXTRACT_ALL($0, '(\\{[^{]*\\})')AS (T:tuple(r1,r2,r3,r4,r5)); 

如果我只使用一列而不是$ 0,那么它也不会起作用。

非常欢迎任何帮助或解释。

干杯, 乔

1 个答案:

答案 0 :(得分:1)

有一个JsonLoader()来读取JSON格式的输入。您可以使用JSsonLoader()而不是使用REGEX,它非常易于使用。有关详细信息,请参阅http://joshualande.com/read-write-json-apache-pig/