我正在使用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
答案 0 :(得分:1)
Elephant Bird有JsonStringToMap,它解析JSON字符串并输出Pig中的Map。这与他们的JsonLoader不同,{{3}}在加载文件时解析JSON。