我有一个Spark RDD,看起来像这样:
[(1, ...),
(1, ...),
(2, ...),
(3, ...)]
我正在尝试删除具有重复键的记录,在本例中,我希望排除具有键“1”的所有记录。我想要的最终输出应该是
^{pr2}$到目前为止,我所做的一切都奏效了,但我的直觉认为应该有更好的解决方案:
>> a = sc.parallelize([(1,[1,1]), (1,[1,1]), (2,[1,1]), (3,[1,1])])
>> print a.groupByKey() \
.filter(lambda x: len(x[1])==1 ) \
.map(lambda x: (x[0], list(x[1])[0] )).collect()
[(2, [1, 1]), (3, [1, 1])]
有人能帮我吗?在
其他两个选项:
subtractByKey
-这需要洗牌,这样总成本可以类似于groupByKey
。(可选)您可以对输入RDD
进行分区,并将preservesPartitioning
设置为True
:广播变量:
正滤波器-如果您希望有大量重复
负滤波器-如果需要低重复数
相关问题 更多 >
编程相关推荐