Apache PIG,JSON 加载器
Apache PIG, JSON Loader
这是我的示例输入文件:
[{"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;
预期输出:
36,136.401,1872.0,13
36,105.2,123084.8,13
实际输出:
( )
请帮帮我!我错过了什么?
您的输入数据是 JSON 数组,这就是 Pig 的 JsonLoader 无法读取它的原因。
如果可能,删除数组(如下所示)或参见 Load JSON array into Pig。基本原理你应该能搞清楚。
{"disknum":36,"disksum":136.401,"disk_rate":1872.0,"disk_lnum": 13}
{"disknum":36,"disksum":105.2,"disk_rate":123084.8,"disk_lnum": 13}
请注意 file.You 中对象周围的 [] 可以将其加载到地图并访问字段或使用 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;
这是我的示例输入文件:
[{"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;
预期输出:
36,136.401,1872.0,13
36,105.2,123084.8,13
实际输出:
( )
请帮帮我!我错过了什么?
您的输入数据是 JSON 数组,这就是 Pig 的 JsonLoader 无法读取它的原因。 如果可能,删除数组(如下所示)或参见 Load JSON array into Pig。基本原理你应该能搞清楚。
{"disknum":36,"disksum":136.401,"disk_rate":1872.0,"disk_lnum": 13}
{"disknum":36,"disksum":105.2,"disk_rate":123084.8,"disk_lnum": 13}
请注意 file.You 中对象周围的 [] 可以将其加载到地图并访问字段或使用 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;