这是我的示例输入文件:

[{"disknum":36,"disksum":136.401,"disk_rate":1872.0,"disk_lnum": 13}]
[{"disknum":36,"disksum":105.2,"disk_rate":123084.8,"disk_lnum": 13}]
我正在尝试使用PIG中的JsonLoader解析此JSON数据,
这是我的脚本:
a = LOAD '/pig/tc.log' using JsonLoader ('disknum:chararray,disksum:chararray,disk_rate:chararray,disk_lnum:chararray');

b = FOREACH a GENERATE disknum,disksum,disk_rate,disk_lnum;

DUMP b;
预期输出:

实际输出:

请帮我!我想念什么?

最佳答案

请注意文件中对象的[]。您可以将其加载到 map 上并访问字段,也可以使用ElephantBird jsonloader。

a = LOAD '/pig/tc.log' using JsonLoader(json:map[]);
b = FOREACH a GENERATE flatten(json#'disknum') AS disknum,
                       flatten(json#'disksum') AS disksum,
                       flatten(json#'disk_rate') AS disk_rate,
                       flatten(json#'disk_lnum') AS disk_lnum;
DUMP b;

关于json - Apache PIG,JSON加载程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42040492/

10-14 09:53