我是PIG脚本和使用JSON的新手。我需要解析PIG中的多级json文件。说,
{
"firstName": "John",
"lastName" : "Smith",
"age" : 25,
"address" :
{
"streetAddress": "21 2nd Street",
"city" : "New York",
"state" : "NY",
"postalCode" : "10021"
},
"phoneNumber":
[
{
"type" : "home",
"number": "212 555-1234"
},
{
"type" : "fax",
"number": "646 555-4567"
}
]
}
我能够通过JsonLoader()解析单个级别的json,并进行连接和其他操作,并获得所需的结果,如JsonLoader('name:chararray,field1:int .....'); 是否可以使用PIG 0.10.0的内置JsonLoader()函数解析上面提到的JSON文件。如果是。请解释一下如何完成它并访问特定JSON的字段?
答案 0 :(得分:3)
您可以使用Twitter的Elephant Bird处理嵌套的json加载:https://github.com/kevinweil/elephant-bird
a = LOAD 'file3.json' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad')
这会将JSON解析为地图http://pig.apache.org/docs/r0.11.1/basic.html#map-schema,JSONArray会被解析为地图的DataBag。
答案 1 :(得分:1)
可以通过创建自己的UDF来实现。一个简单的UDF示例显示在下面的链接
中答案 2 :(得分:0)
C = load' path'使用JsonLoader(' firstName:chararray,lastName:chararray,age:int,address :( streetAddress:chararray,city:chararray,state:chararray,postalCode:chararray), 电话号码:{(类型:chararray,编号:chararray)}&#39)