我在将一组 json 文档加载到 PIG 时遇到了问题。我所拥有的是很多 json 文档,它们所拥有的字段都各不相同,我需要的字段在大多数文档中,而在缺少的情况下,我想获得一个空值。
我刚刚下载并编译了最新的 Pig 版本(直接来自 apache git 存储库的 0.12),以确保尚未解决此问题。
我拥有的是这样的 json 文档:
{"foo":1,"bar":2,"baz":3}
当我使用这个将它加载到 PIG 中时
Json1 = LOAD 'test.json' USING JsonLoader('foo:int,bar:int,baz:int');
DESCRIBE Json1;
DUMP Json1;
我得到了预期的结果
Json1: {foo: int,bar: int,baz: int}
(1,2,3)
但是,当字段在架构中的顺序不同时:
Json2 = LOAD 'test.json' USING JsonLoader('baz:int,bar:int,foo:int');
DESCRIBE Json2;
DUMP Json2;
我得到了一个不想要的结果:
Json2: {baz: int,bar: int,foo: int}
(1,2,3)
那应该是
(3,2,1)
显然,模式定义中的字段名称与 json 中的字段名称无关。
我需要的是从 json 文件(带有嵌入的文档!)加载特定字段到 PIG 中。
我该如何解决这个问题?