当我定义一个本地变量,比如一个复杂对象的大列表,并在pyspark中的UDF中使用它时会发生什么?让我用这个作为例子:
huge_list = [<object_1>, <object_2>, ..., <object_n>]
@udf
def some_function(a, b):
l = []
for obj in huge_list:
l.append(a.operation(obj))
return l
df2 = df.withColumn('foo', some_function(col('a'), col('b')))
是否自动广播?还是节点每次与主节点通信以获取其数据?使用这种方法会有什么性能损失?还有更好的方法吗?(考虑到每次应用UDF时从头开始构建huge_list
会更糟)