2012-03-29 23 views
1

我正在使用pig分析从Cassandra加载的数据。一,我得到列的是产品ID和产品信息以JSON格式的字符串:在Pig中解析JSON格式的字符串

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

请注意,有些行会在字符串中的额外的东西,而其他人只会有ID。

不管怎么说,我需要做的是分析每一个“项目”字符串和生成的ID号:

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

据我所知,没有JSON解析器猪在那里,只装和存储功能(像elephantbird)。是否有可能像REGEX_EXTRACT那样做我想要的东西,还是必须编写自己的UDF(或者有更好,更漂亮,更聪明的方法)?

在此先感谢您的帮助!我使用的是猪0.93

+0

可能重复的[我如何解析JSON在猪?](http://stackoverflow.com/q/5013003/90527) – outis 2012-03-29 03:10:30

+0

是的,我看了那篇博客文章 - 他们正在使用[elephantbird](http: //eric.lubow.org/2011/hadoop/pig-queries-parsing-json-on-amazons-elastic-map-reduce-using-s3-data/)来加载JSON格式的数据。我的数据实际上是所有字符串(并且已经加载到Pig中),并且只有一个部分具有类似JSON的格式(需要解析) – hriundel 2012-03-29 03:33:04

回答

1

象鸟

PS具有JsonStringToMap,它解析JSON字符串并输出头猪地图。这与它们的JsonLoader不同,后者在加载文件时解析JSON。

+0

感谢您指出这一点。尽管我们需要不同的东西,但是基于JsonStringToMap编写UDF相对比较简单,尽管只有基本的Java知识。 – hriundel 2012-04-05 18:05:27