У меня есть PySpark UDF, который возвращает кортеж String, который я закодировал как структуру. Вот игрушечный пример:
def my_func(x):
return "1", x, "3"
spark.udf.register("my_func", lambda x: my_func(x), StructType([StructField("one", StringType(),
StructField("two", StringType(),
StructField("three", StringType()])
, который я называю
spark.sql("select col1, my_func(col1) from sdf").show()
. Я наблюдаю 10–20-кратное снижение производительности при возврате всего кортежа по сравнению с возвратом одного элемента кортежа,например,
spark.udf.register("my_func", lambda x: my_func(x)[1], StringType())
Это известная проблема, и есть ли способ избежать замедления конверсии?