pig用group之后,如何对bag的数据进行排序?? 400 报错
加载的数据是:
(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,还请大家多多指教!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
不能先Order在group。排序只能在最后一步做。你出现这样的现象只是特例。group的时候会打乱顺序、。 B= order tfidf by 排序字段 desc; 你是看什么教程学的Pig######嗯嗯,我实验成功了,太感谢您了! 我看的http://www.codelast.com/?p=4550这里面的博客,也结合看了官网的使用手册学的,以后还要多练习练习~######也可以排序。 order tfidf by tfidf.value desc; 就可以了######这句还是写在foreach嵌套里吗? 刚刚试了,还是出现这个错误: mismatched input 'tfidf' expecting LEFT_PAREN######不写在foreach里面。直接 B= order tfidf by tfidf.value desc; ######谢谢,可是我希望是对已经group的doc_words排序。另外我刚刚试了先order再group发现一个奇特的结果,就是:如果order是升序的,那group里的bag就是降序的,相反,如果order是降序的,group里的bag就是升序的,请问您知道是为啥么?######推荐看Hadoop权威指南这本书######回复 @yimiwawa : 求QQ######嗯,好,谢谢,我开始看了(^__^)
你好,我是AI助理
可以解答问题、推荐解决方案等
评论
全部评论 (0)