2012-03-29 57 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