【问题标题】:Cannot load full data in the JSON using JsonLoader无法使用 JsonLoader 在 JSON 中加载完整数据
【发布时间】:2016-08-17 23:59:38
【问题描述】:

我有以下格式的 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,然后运行这个 pig 脚本并进行一些分析,然后想写回 csv 文件,处理后每 1 GB 将附加csv 中的数据,而不是 100 GB JSON 数据的单个 csv。

【问题讨论】:

    标签: apache-pig


    【解决方案1】:

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

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

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

    B = DISTINCT A parallel 100;
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 2017-06-26
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多