pig用group之后,如何对bag的数据进行排序?

发布于 2021-11-23 15:10:43 字数 820 浏览 860 评论 5

加载的数据是:

(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

各自安好 2021-11-24 09:37:13

嗯,好,谢谢,我开始看了(*^__^*)

悲喜皆因你 2021-11-24 09:30:22

推荐看Hadoop权威指南这本书

筱武穆 2021-11-24 09:29:10

谢谢,可是我希望是对已经group的doc_words排序。另外我刚刚试了先order再group发现一个奇特的结果,就是:如果order是升序的,那group里的bag就是降序的,相反,如果order是降序的,group里的bag就是升序的,请问您知道是为啥么?

累赘 2021-11-24 08:45:54

这句还是写在foreach嵌套里吗? 刚刚试了,还是出现这个错误: mismatched input 'tfidf' expecting LEFT_PAREN

左岸枫 2021-11-24 04:37:02

嗯嗯,我实验成功了,太感谢您了! 我看的http://www.codelast.com/?p=4550这里面的博客,也结合看了官网的使用手册学的,以后还要多练习练习~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文