如何在猪中读取json数据?
Posted
技术标签:
【中文标题】如何在猪中读取json数据?【英文标题】:How to read json data in pig? 【发布时间】:2016-09-23 14:17:23 【问题描述】:我有以下类型的 json 文件:
"employees":[
"firstName":"John", "lastName":"Doe",
"firstName":"Anna", "lastName":"Smith",
"firstName":"Peter", "lastName":"Jones"
]
我正在尝试执行以下 pig 脚本来加载 json 数据
A = load 'pigdemo/employeejson.json' using JsonLoader ('employees:(firstName:chararray),(lastName:chararray)');
出现错误!!
无法从支持的错误重新创建异常:错误: org.codehaus.jackson.JsonParseException:意外的输入结束: ARRAY 的预期关闭标记(来自 [来源: java.io.ByteArrayInputStream@1553f9b2;行:1,列:1])在 [来源:java.io.ByteArrayInputStream@1553f9b2;行:1,列:29]
【问题讨论】:
您遇到的错误是什么 #Satya 我更新了问题 A = 使用 JsonLoader 加载 'pigdemo/employeejson.json' ('employees:(firstName:chararray),(lastName:chararray)');试试这个!! 2016-09-23 07:38:02,032 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 失败! 2016-09-23 07:38:02,040 [main] 错误 org.apache.pig.tools.grunt.Grunt - 错误 2997:无法从支持的错误重新创建异常:AttemptID:attempt_1474637915471_0007_m_000000_3 信息:错误:org.codehaus.jackson。 JsonParseException: Unexpected end-of-input: ARRAY 的预期关闭标记(来自 [Source: java.io.ByteArrayInputStream@7a91efc3; line: 1, column: 1])这是我收到的错误消息@Ankur 试试这个@Avijit:A = 使用 JsonLoader 加载 'pigdemo/employeejson.json' ('employees':(firstName:chararray),(lastName:chararray)); 【参考方案1】:首先,您看到Unexpected end-of-input
的原因是因为每个重新编码都应该在 1 行中 - 像这样:
"employees":["firstName":"John", "lastName":"Doe", "firstName":"Anna", "lastName":"Smith", "firstName":"Peter", "lastName":"Jones"]
现在 - 因为每一行都是员工列表,所以运行下一个命令
A = load '$flurryData' using JsonLoader ('employees:bag t:tuple(firstName:chararray, lastName:chararray)');
describe A;
dump A;
给出下一个输出
A: employees: t: (firstName: chararray,lastName: chararray)
((John,Doe),(Anna,Smith),(Peter,Jones))
希望有帮助!
【讨论】:
以上是关于如何在猪中读取json数据?的主要内容,如果未能解决你的问题,请参考以下文章