为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不聚合原始 RDD 分区的情况下与多个 RDD 进行分组?

如何在不聚合原始 RDD 分区的情况下与多个 RDD 进行分组?

函数式编程 2022-04-27 13:07:35
我有两个 RDD 有公共变量,其格式如下: x = sc.parallelize([("A", 1), ("B", 4),("A",2)]) y = sc.parallelize([("A", -1),("B", 5)])然后我想使用公共变量与他们分组。"A"和"B"。我尝试使用以下命令: z = [(x, tuple(map(list, y))) for x, y in sorted(list(x.cogroup(y).collect()))] print(z)我得到的是[('A', ([1, 2], [-1])), ('B', ([4], [5]))]但是,我想要的是[('A', ([1], [-1])), ('B', ([4], [5])),('A', ([2], [-1]))]如何更改代码以获得如上所示的输出?谢谢你。
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

您可以通过直接连接来做到这一点:


print(x.join(y).collect())

#[('A', (1, -1)), ('A', (2, -1)), ('B', (4, 5))]

mapValues如果您希望 s 的元素为tuples,请添加调用list:


print(x.join(y).mapValues(lambda a: tuple([b] for b in a)).collect())

#[('A', ([1], [-1])), ('A', ([2], [-1])), ('B', ([4], [5]))]


查看完整回答
反对 回复 2022-04-27
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信