Pyspark и локальные переменные внутри UDF - PullRequest
0 голосов
/ 11 ноября 2018

Что именно происходит, когда я определяю локальную переменную, такую ​​как огромный список сложных объектов, и использую ее внутри UDF в pyspark. Позвольте мне использовать это в качестве примера:

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')))

Это транслируется автоматически? Или узлы связываются с мастером, чтобы каждый раз получать его данные? Каковы штрафы за производительность, которые я имею с этим подходом? Есть ли лучший? (Учитывая, что было бы хуже создавать huge_list с нуля каждый раз, когда применяется UDF)

...