在Pig中解析JSON格式的字符串

时间:2012-03-29 01:16:08

标签: regex json apache-pig

我正在使用pig来分析从Cassandra加载的数据。我得到的一个列是一个包含产品ID和JSON格式的产品信息的字符串:

row | ... |                              items                                       | ...  
 1  | ... | "[{"id":"1", "useless_info":"blah"}, {"id":"2", "useless_info":"bleh"}]" | ...          
 2  | ... | "[{"id":"3"}]"                                                           | ...  
 .  |  .  |                                   .                                      |  .    

请注意,某些行在字符串中会有其他内容,而其他行只会有id。

无论如何,我需要做的是解析每个“items”字符串并生成id号:

row | id | ... |  
 1  | 1  | ... |  
 1  | 2  | ... |  
 2  | 3  | ... |  
etc

据我所知,Pig没有JSON解析器,只有加载和存储函数(如elephantbird)。有可能用REGEX_EXTRACT之类的东西做我想做的事情,还是我必须编写自己的UDF(或者有更好,更漂亮,更聪明的方式)?

提前感谢您的帮助!

PS我正在使用Pig 0.93

1 个答案:

答案 0 :(得分:1)

Elephant Bird有JsonStringToMap,它解析JSON字符串并输出Pig中的Map。这与他们的JsonLoader不同,{{3}}在加载文件时解析JSON。