Pig : json loader 的结果为空

Posted

技术标签:

【中文标题】Pig : json loader 的结果为空【英文标题】:Pig : result of json loader empty 【发布时间】:2014-07-26 23:13:33 【问题描述】:

我正在使用 cdh5 quickstart vm,我有一个像这样的文件(这里不完整):

"user_id": "kim95",
 "type": "Book",
 "title": "Modern Database Systems: The Object Model, Interoperability, and
Beyond.",
 "year": "1995",
 "publisher": "ACM Press and Addison-Wesley",
 "authors": ,
 "source": "DBLP"

"user_id": "marshallo79",
 "type": "Book",
 "title": "Inequalities: Theory of Majorization and Its Application.",
 "year": "1979",
 "publisher": "Academic Press",
 "authors": ("Albert W. Marshall"), ("Ingram Olkin"),
 "source": "DBLP"


我使用了这个脚本:

books = load 'data/book-seded.json'
        using JsonLoader('t1:tuple(user_id:
chararray,type:chararray,title:chararray,year:chararray,publisher:chararray,source:chararray,authors:bagT:tuple(author:chararray))');

STORE books INTO 'book-no-seded.tsv';

脚本有效,但是生成的文件是空的,你知道吗?

【问题讨论】:

我还尝试在使用此网站通过终端中的 sed 更改数据格式后调整我的脚本:joshualande.com/read-write-json-apache-pig 但它不起作用 【参考方案1】:

最后,只有这个模式有效:如果我添加或删除与此配置不同的空格,那么我会遇到错误(我还为元组添加了“名称”并在它为空时指定了“null”,并更改了顺序在作者和来源之间,但即使没有这种配置,它仍然是错误的)

"user_id": "kim95", "type": "Book","title": "Modern Database Systems: The Object Model, Interoperability, and Beyond.", "year": "1995", "publisher": "ACM Press and Addison-Wesley", "authors": ["name":null"], "source": "DBLP"
"user_id": "marshallo79", "type": "Book", "title": "Inequalities: Theory of Majorization and Its Application.", "year": "1979", "publisher": "Academic Press", "authors": ["name":"Albert W. Marshall","name":"Ingram Olkin"], "source": "DBLP"

工作脚本就是这个:

books = load 'data/book-seded-workings-reduced.json'
        using JsonLoader('user_id:chararray,type:chararray,title:chararray,year:chararray,publisher:chararray,authors:(name:chararray),source:chararray');

STORE books INTO 'book-table.csv';  //whether .tsv or .csv

【讨论】:

【参考方案2】:

尝试使用 USING org.apache.pig.piggybank.storage.JsonStorage() 将书籍存储到“book-no-seded.tsv”中;

【讨论】:

它不适用于“使用 org.apache.pig.piggybank.storage.JsonStorage();”但只能使用“USING JsonStorage();”.....但是文件仍然是空的 最后我得到了四个文件:“成功”文件为空。在“part-m-00000”中我有这个:““t1”:null”...它与我对 Romain 的回答有关吗???【参考方案3】:

您需要确保 LOAD 架构良好。您可以尝试发送DUMP books 进行快速检查。

当我们在本教程中使用 Pig JsonLoader http://gethue.com/hadoop-tutorials-ii-1-prepare-the-data-for-analysis/ 时,我们必须小心输入数据和架构。

【讨论】:

"DUMP" 不起作用,我收到此错误:" You are a Hue admin but not a HDFS superuser (which is "hdfs")" 。所以我通过选择“超级用户状态”创建了一个 hdfs 用户,但即使在登录为 hdfs 之后,错误仍然存​​在 我几乎可以肯定我在尊重猪的约定:除了这个之外,所有有小改动的脚本都失败了

以上是关于Pig : json loader 的结果为空的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apache PIG 读取多行 JSON

查询结果为空,输出变量正确

C# JSON 解析结果似乎为空

过滤 PIG LATIN 脚本中的列在为空的单元格上插入来自其他列的数据

php JSON编码结果为空(JSON_ERROR_UTF8)

pig 新手,如何使用 pig 中的键值对子集将 JSON 转换为另一个 JSON?