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 的结果为空的主要内容,如果未能解决你的问题,请参考以下文章
过滤 PIG LATIN 脚本中的列在为空的单元格上插入来自其他列的数据