gpt4 book ai didi

python - 多处理 RDD 列表

转载 作者:太空狗 更新时间:2023-10-30 01:27:34 26 4
gpt4 key购买 nike

我正在尝试多进程列表 RDD,如下所示

from pyspark.context import SparkContext
from multiprocessing import Pool



def square(rdd_list):
def _square(i):
return i*i
return rdd_list.map(_square)

sc = SparkContext('local', 'Data_Split')
data = sc.parallelize([1,2,3,4,5,6])

dataCollection = [data, data, data]

p = Pool(processes=2)
result = p.map(square, dataCollection)
print result[0].collect()

我期待输出中的 RDD 列表,每个元素都包含来自 data 的平方元素。

但是运行代码会导致以下错误:

Exception: It appears that you are attempting to broadcast an RDD or reference an RDD from an action or transformation. RDD transformations and actions can only be invoked by the driver, not inside of other transformations; for example, rdd1.map(lambda x: rdd2.values.coun\ t() * x) is invalid because the values transformation and count action cannot be performed inside of the rdd1.map transformation. For more information, see SPARK-5063.

我的问题是:-

1) 为什么代码没有按预期工作?我该如何解决这个问题?

2) 如果我使用p.map(池)而不是简单的ma​​p 在我的 RDD 列表上。

最佳答案

这是因为当您使用多进程时,RDD 必须在发送到其他进程之前进行序列化/pickle。每当尝试序列化 RDD 时,Spark 都会执行检查,并抛出该错误。

关于python - 多处理 RDD 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38370684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com