无法使用JsonLoader在JSON中加载完整数据

时间:2016-08-14 11:46:53

标签: apache-pig

我有以下格式的JSON数据

{"fname":"peter","lname":"parker","reviews":[10,12],"idnum":123456,"gpa":10.5}

我正在使用以下代码:

data = LOAD "my file.json" USING JsonLoader(name:chararray,name:char array,reviews:({(chararray)},{(char array)}),indium:int,gap:float)
dump data;

我只得到

peter,parker

姓氏后面没有任何内容。即使我使用char数组作为int和float的地方,也无法获取这些数据。

另外,如果您有任何想法我应该如何使用逗号分隔将结果数据存储到.csv文件。因为,我有一个大文件(> 100GB),我必须拆分该文件,每个1 GB,我运行这个猪脚本并做一些分析然后想写回csv文件,处理后每1 GB将附​​加csv中的数据,而不是JSON中100 GB数据的单独csv。

1 个答案:

答案 0 :(得分:0)

PIG JsonLoader与json数组无法正常工作。更好地使用elephant-bird json库。它们非常优雅且易于使用: -

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

关于您的CSV格式查询我假设您知道如何解析json并将其转换为逗号分隔字符串,您的问题更多的是如何在1GB文件输出中拆分它们。如果是这种情况,请使用reducer的并行属性。完成json分析并使用DISTINCT查询解析后可以获得所需的输出(少数情况除外): -

B = DISTINCT A parallel 100;