scala – 按键分组火花组多个rdd项目

我有rdd项目,如:

(3922774869,10,1)
(3922774869,11,12,2)
(3922774869,13,2)
(1779744180,1)
(1779744180,14,3)
(3922774869,15,16,17,4)
...

表示(id,age,count)并且我想将这些行分组以生成一个数据集,其中每一行代表每个id的年龄分布,如下所示((id,age)为uniq):

(1779744180,(10,1),(11,(12,2),(13,2) ...)
(3922774869,3),4) ...)

这是(身份证,(年龄,计数),计数)……)

有人能给我一个线索吗?

解决方法

您可以先减少两个字段,然后使用groupBy:

rdd
  .map { case (id,count) => ((id,age),count) }.reduceByKey(_ + _)
  .map { case ((id,count) => (id,(age,count)) }.groupByKey()

返回RDD [(Long,Iterable [(Int,Int)])],对于上面的输入,它将包含这两个记录:

(1779744180,CompactBuffer((16,(15,(14,(17,1)))
(3922774869,CompactBuffer((11,(16,4),5)))

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...