【发布时间】:2017-04-25 13:29:31
【问题描述】:
我想在两个文件合并后过滤记录。
文件 BX-Books.csv 包含书籍数据。并且文件 BX-Book-Ratings.csv 包含图书评级数据,其中 ISBN 是两个文件的公共列。文件之间的内部连接是使用此列完成的。
我想买 2002 年出版的书。
我使用了以下脚本,但我得到了 0 条记录。
grunt> BookXRecords = LOAD '/user/pradeep/BX-Books.csv' USING PigStorage(';') AS (ISBN:chararray,BookTitle:chararray,BookAuthor:chararray,YearOfPublication:chararray, Publisher:chararray,ImageURLS:chararray,ImageURLM:chararray,ImageURLL:chararray);
grunt> BookXRating = LOAD '/user/pradeep/BX-Book-Ratings.csv' USING PigStorage(';') AS (user:chararray,ISBN:chararray,rating:chararray);
grunt> BxJoin = JOIN BookXRecords BY ISBN, BookXRating BY ISBN;
grunt> BxJoin_Mod = FOREACH BxJoin GENERATE $0 AS ISBN, $1, $2, $3, $4;
grunt> FLTRBx2002 = FILTER BxJoin_Mod BY $3 == '2002';
【问题讨论】:
-
什么是“描述 BxJoin_Mod;”输出?您是否还有 YearOfPublication 为 2002 的数据?
-
咕噜声> DESCRIBE BxJoin_Mod; BxJoin_Mod: {ISBN: chararray,BookXRecords::BookTitle: chararray,BookXRecords::BookAuthor: chararray,BookXRecords::YearOfPublication: chararr ay,BookXRecords::Publisher: chararray}
-
是的,我有 YearOfPublication == 2002 的数据
-
请检查我发布的答案,我试过了,它确实有效。
-
你能告诉我这是否适合你吗?
标签: hadoop apache-pig bigdata