gpt4 book ai didi

python - 我应该将广播变量或broadcast.value()传递到我的RDD[自定义对象]中吗?

转载 作者:行者123 更新时间:2023-12-01 03:54:38 26 4
gpt4 key购买 nike

我有一些相当大的列表,我需要在组成 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()))

谢谢!

最佳答案

取决于你想要什么self.BROADCASTED包含装有。我假设您已经简化了您的方法 foo对于此示例,但因此不清楚 foo 的目的是什么是。

如果你希望它包含 [a,b,c,..] ,然后执行 broadcasted_list.value()

如果您希望该变量包含对广播对象的引用,请传入 broadcasted_list

假设您需要列表中的值来执行进一步的计算,您可能需要使用 broadcasted_list.value() 。我想你会发现如果你传入broadcasted_list你最终只会得到一个对对象的引用,如下所示:<pyspark.broadcast.Broadcast object at 0x1f36f50> .

关于python - 我应该将广播变量或broadcast.value()传递到我的RDD[自定义对象]中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37686810/

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