小编hol*_*est的帖子

UDF中的Pyspark和局部变量

当我定义局部变量(例如大量复杂对象)并在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')))
Run Code Online (Sandbox Code Playgroud)

它会自动播放吗?还是节点与主机进行通信以每次获取其数据?我使用这种方法会有哪些性能损失?有更好的吗?(考虑到huge_list每次应用UDF都从头开始构建会更糟)

python user-defined-functions apache-spark pyspark

5
推荐指数
1
解决办法
102
查看次数