【发布时间】:2015-02-22 01:19:06
【问题描述】:
我有一个 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])
【问题讨论】:
-
嗨 Siva...你能回答我的问题吗@Sivasakthi Jayaraman
-
JsonLoader 或大象加载器将始终仅适用于单行。它不适用于多行。在传递给 pig 之前,您需要将输入转换为单行。一种解决方法是编写一个 shell 脚本并调用逻辑以使用“SED”命令将多行替换为单行,然后在 shell 脚本中调用 pig 脚本。此链接将帮助您如何通过 shell 脚本调用 pig。 stackoverflow.com/questions/26239338/…
标签: hadoop apache-pig