在 Apache PIG 中使用 Elephant Bird JsonLoader 加载方括号中的 JSON 数据
Load JSON data enclosed in square brackets using Elephant Bird JsonLoader in Apache PIG
如果记录采用这种格式,我可以使用 Elephantbird JsonLoader 加载数据:
{"disknum":36,"disksum":136.401,"disk_rate":1872.0,"disk_lnum": 13}
但实际数据为以下格式:(括在方括号中)
[{"disknum":36,"disksum":136.401,"disk_rate":1872.0,"disk_lnum": 13}]
当我尝试解析它时,它既没有抛出错误也没有提供任何有用的输出。说明成功了!读取了 0 条记录,写入了 0 条记录。
请指教如何处理带方括号的数据。
下面是我对非方括号记录的语法:
register '/home/data/Desktop/elephantbird/elephant-bird-core-4.1.jar';
register '/home/gopal/Desktop/elephantbird/elephant-bird-hadoop-compat-4.1.jar';
register '/home/gopal/Desktop/elephantbird/elephant-bird-pig-4.1.jar';
register '/home/gopal/Desktop/elephantbird/json-simple-1.1.jar';
a = LOAD '/pig/tc1.log' USING com.twitter.elephantbird.pig.load.JsonLoader() as (json:map[]);
b = FOREACH a GENERATE flatten(json#'node_disk_lnum_1') AS node_disk_lnum_1, flatten(json#'node_disk_xfers_in_rate_sum') AS node_disk_xfers_in_rate_sum, flatten(json#'node_disk_bytes_in_rate_22') AS node_disk_bytes_in_rate_22, flatten(json#'node_disk_lnum_7') AS node_disk_lnum_7;
dump b;
请指教!提前致谢:)
我认为这可能会有所帮助:查看解决方案,它非常接近。
Json parse with elephantbird in Pig
您需要为 json 提供根名称。
如果记录采用这种格式,我可以使用 Elephantbird JsonLoader 加载数据:
{"disknum":36,"disksum":136.401,"disk_rate":1872.0,"disk_lnum": 13}
但实际数据为以下格式:(括在方括号中)
[{"disknum":36,"disksum":136.401,"disk_rate":1872.0,"disk_lnum": 13}]
当我尝试解析它时,它既没有抛出错误也没有提供任何有用的输出。说明成功了!读取了 0 条记录,写入了 0 条记录。
请指教如何处理带方括号的数据。
下面是我对非方括号记录的语法:
register '/home/data/Desktop/elephantbird/elephant-bird-core-4.1.jar';
register '/home/gopal/Desktop/elephantbird/elephant-bird-hadoop-compat-4.1.jar';
register '/home/gopal/Desktop/elephantbird/elephant-bird-pig-4.1.jar';
register '/home/gopal/Desktop/elephantbird/json-simple-1.1.jar';
a = LOAD '/pig/tc1.log' USING com.twitter.elephantbird.pig.load.JsonLoader() as (json:map[]);
b = FOREACH a GENERATE flatten(json#'node_disk_lnum_1') AS node_disk_lnum_1, flatten(json#'node_disk_xfers_in_rate_sum') AS node_disk_xfers_in_rate_sum, flatten(json#'node_disk_bytes_in_rate_22') AS node_disk_bytes_in_rate_22, flatten(json#'node_disk_lnum_7') AS node_disk_lnum_7;
dump b;
请指教!提前致谢:)
我认为这可能会有所帮助:查看解决方案,它非常接近。 Json parse with elephantbird in Pig
您需要为 json 提供根名称。