【发布时间】:2016-06-07 18:34:26
【问题描述】:
我需要在组成我的 RDD 的每个对象中访问一些相当大的列表。因此,在我广播这些列表之后,我应该将广播变量或 broadcast.value() 传递给每个对象吗?我不希望为每个对象复制列表,而是希望每个对象都能够使用列表。我的代码如下所示:
class foo(object):
def __init__(self, number, broadcasted)
self.NUMBER = number
self.BROADCASTED = broadcasted
broadcasted_list = sc.broadcast([a, b, c, ...])
我应该将RDD创建为
rdd = sc.parallelize([1, 2, 3]).map(lambda x: foo(x, broadcasted_list))
或
rdd = sc.parallelize([1, 2, 3]).map(lambda x: foo(x, broadcasted_list.value()))
谢谢!
【问题讨论】:
-
你弄明白了吗?我的解决方案对您有用吗?
-
是的,谢谢!我只是传入广播变量并在需要时调用对象引用的值。
标签: python apache-spark pyspark broadcast