pig用group之后,如何对bag的数据进行排序?
加载的数据是:
(3,aaa,0.0)
(2,aaa,0.0)
(1,aaa,0.0)
(1,bbb,0.12206803207423442)
(3,ccc,0.2027325540540822)
(1,ccc,0.04505167867868493)
(2,new,0.13515503603605478)
(1,new,0.04505167867868493)
(2,home,0.13515503603605478)
(1,home,0.09010335735736986)
(1,hello,0.12206803207423442)
(1,world,0.12206803207423442)
pig语句:
tfidf = load 'tfidf.result' using PigStorage(' ') as (doc_id, word, value);
对doc_id字段进行group后,得到的关系的每个元组的第二个值是bag类型,请问怎么对这个bag进行排序呢?
我试过一些这样的foreach嵌套,但是会出错:
doc_words = group tfidf by doc_id;
doc_words_sort = foreach doc_words {
wsrt = order tfidf by tfidf.value desc;
generate group, wsrt;
};
新手学pig,还请大家多多指教!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
嗯,好,谢谢,我开始看了(*^__^*)
推荐看Hadoop权威指南这本书
谢谢,可是我希望是对已经group的doc_words排序。另外我刚刚试了先order再group发现一个奇特的结果,就是:如果order是升序的,那group里的bag就是降序的,相反,如果order是降序的,group里的bag就是升序的,请问您知道是为啥么?
这句还是写在foreach嵌套里吗? 刚刚试了,还是出现这个错误: mismatched input 'tfidf' expecting LEFT_PAREN
嗯嗯,我实验成功了,太感谢您了! 我看的http://www.codelast.com/?p=4550这里面的博客,也结合看了官网的使用手册学的,以后还要多练习练习~