我们能在一个map函数中生成2对(键,值)吗?如果是,怎么做?

js81xvg6  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(340)

我有一个userid数据集和一个与每个userid相关的post。我想计算每个用户的帖子数。我还想把每个userid的所有帖子放在一起(用一些分隔符来连接所有帖子)。
有什么建议吗?

x4shl7ld

x4shl7ld1#

键/值对中的键应该是userid。该值将是一个字符串列表(消息)。大多数列表都有count属性。
您要查找的信息的访问方式如下:
var userid=39;
获取用户39的第一条消息:usermessages[userid][0]。
获取用户39发布的消息数:usermessages[userid].count()

nmpmafwu

nmpmafwu2#

伊莫,你可以有一个制图器和一个缩小器。
Map器:
类postmapper扩展Map器<object,text,text,text>
map()可以将一个键(userid)和一个值(post)写入上下文。
减速器:
类postreducer扩展reducer<text,text,text,text>
reduce()可以有一个iterable循环,其中(i)一个计数器对每个获取的post计数,以及(ii)一个文本变量可用于将每个获取的post与合适的分隔符连接起来。
完成循环后,键/userid和值/
连接的文本可以写入reducer的上下文。
作业成功运行后,生成的文件将包含userid和连接的post,并用一个选项卡分隔。
注意:在连接之前删除文章中的所有制表符。在count前面加上一个tab,如果您想让count也出现在输出中,就用连接的post将其追加。

相关问题