pig jsonloader数组解析问题

时间:2014-05-23 03:45:34

标签: json hadoop apache-pig

我有一个json编码数据需要使用pig解析。

{ “ARR”:[1,2,3,4]}

根据http://help.mortardata.com/technologies/pig/json#toc_4JsonLoaderSchemaGuidelines的文件 , 我的加载架构是:

a = load 'testJsonPig.log' using JsonLoader('arr:{t:(i:int)}');

并转储它:

dump a;

但我得到了一个令人期待的结果:

()

结果是空的,我不知道为什么会这样,我似乎遇到了与此链接相同的问题 Pig default JsonLoader schema issue  描述

我的猪版本是

  

Apache Pig版本0.12.1(r1585011)

并希望有人可以提前帮助我。

4 个答案:

答案 0 :(得分:1)

PIG-2949是描述此问题的问题。它已经解决,应该像Pig 0.15.0一样开箱即用。所以是的 - 正如OP发现的那样 - elephantbird是处理此类数组的唯一简单方法现在,但很快猪就能够原生地处理它们。

(完全披露 - 我自己关闭了这个问题)

答案 1 :(得分:0)

最后我使用elephantbird jsonloader来解决我的问题。

https://github.com/kevinweil/elephant-bird/

答案 2 :(得分:0)

arr:bag{a:tuple(a:int)}应该有用。

答案 3 :(得分:0)

可以跳过上述解决方案中的包和元组关键字。

a = load 'testJsonPig.log' using JsonLoader('arr:{(int)}');
DUMP a;

输出: ({(1),(2),(3),(4)})

创建一个元组包,每个元组包含1个元素。