我有兩個 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條經驗 獲得超6個贊
您可以通過直接連接來做到這一點:
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]))]
添加回答
舉報
0/150
提交
取消