scala – 按键分组火花组多个rdd项目
发布时间:2020-12-16 18:23:07 所属栏目:安全 来源:网络整理
导读:我有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)
我有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))) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |