当combine函数更改pyspark中的输入时,reducebykey的行为是不确定的

dldeef67  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(185)

我有一个rdd的键,值对。值是python字典。我有下面的合并函数将两个字典合并在一起

def combine(d1, d2):
    d1.update(d2)
    return d1

然后我打电话来 rdd.reduceByKey(combine) 减少输入rdd。
我有一种感觉,修改输入可能会打破联想和交换的要求。输出确实是不确定的,会丢失大量数据。
将函数更改为以下内容可以解决此问题。

def reduce(d1, d2):
    d = {}
    d.update(d1)
    d.update(d2)
    return d

然而,我想了解更多关于为什么第一个实现是错误的。我的印象是reducebykey在每个分区内按顺序工作,同时在不同分区之间工作。在这种情况下,一次只能由一个worker访问输入。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题