我有一个JSON文件,想要使用Apache Pig阅读。
我尝试使用常规JSONLOADER
,但看起来JSONLOADER
仅适用于单行JSON。然后我尝试了Elephant-Bird
。但我仍然无法正确看到结果。任何人都可以建议一个解决方案吗?
输入:
{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
注意:我不想将输入转换为单行。
脚本:
A = LOAD 'input' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad');
B = FOREACH A GENERATE FLATTEN($0#'employees');
Dump B;
预期结果应为:
([firstName#John,lastName#Doe])
([firstName#Anna,lastName#Smith])
([firstName#Peter,lastName#Jones])
答案 0 :(得分:1)
正如siva的评论中提到的,答案基本上是你需要将输入更改为一行。
JsonLoader或elephantbird加载器将始终只与单个一起工作 线。它不适用于多线。您需要转换输入 在去猪之前去单行。一个解决方法是写一个 shell脚本并调用逻辑将多行替换为单行 使用'SED'命令,然后在shell脚本中调用pig脚本。 此链接将帮助您如何通过shell脚本调用pig。