Что именно происходит, когда я определяю локальную переменную, такую как огромный список сложных объектов, и использую ее внутри 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)