【发布时间】:2014-08-25 23:56:39
【问题描述】:
您好,我有这样的数据:
{“user_id”:“kim95”,“type”:“Book”,“title”:“现代数据库系统:对象模型、互操作性和超越。”、“year”:“1995”、“publisher” ": "ACM Press and Addison-Wesley", "authors": [{"name":"null"}], "source": "DBLP"}
{“user_id”:“marshallo79”,“type”:“Book”,“title”:“不等式:大写理论及其应用。”,“year”:“1979”,“publisher”:“Academic Press", "authors": [{"name":"Albert W. Marshall"},{"name":"Ingram Olkin"}], "source": "DBLP"}
{"user_id": "knuth86a", "type": "Book", "title": "TeX: The Program", "year": "1986", "publisher": "Addison-Wesley", "作者": [{"name":"Donald E. Knuth"}], "来源": "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');
doc = group books by publisher;
res = foreach doc generate group,books.title,count(books.publisher);
DUMP res;
在第二个查询中,我希望有这样的结构:(name,year),title
所以我尝试了这个:
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');
flat =group books by (generate FLATTEN((authors.name),year);
tab = foreach flat generate group, books.title;
DUMP tab;
但它也不起作用......
有什么想法吗?
【问题讨论】:
-
你能更清楚你期望的输出是什么
-
对于第一个,我喜欢这样的输出:出版商、标题和同一出版商在我的文件中加载的次数
-
第二个我想要一个 authirs 的每个名字的列表以及一组年份......然后是书名
-
所以像(name,year)在组中并为每个元组生成与该组链接的标题:(name,year),title
标签: hadoop apache-pig flatten cloudera-cdh