Apache Spark - присваивает результат UDF нескольким столбцам данных

Я использую pyspark, загружаю большой файл csv в фрейм данных с помощью spark-csv, и в качестве шага предварительной обработки мне нужно применить различные операции к данным, доступным в одном из столбцов (который содержит строку json) , Это вернет значения X, каждое из которых должно быть сохранено в отдельном столбце.

Эта функциональность будет реализована в UDF. Однако я не уверен, как вернуть список значений из этой UDF и передать их в отдельные столбцы. Ниже приведен простой пример:

(...)
from pyspark.sql.functions import udf
def udf_test(n):
    return [n/2, n%2]

test_udf=udf(udf_test)


df.select('amount','trans_date').withColumn("test", test_udf("amount")).show(4)

Это производит следующее:

+------+----------+--------------------+
|amount|trans_date|                test|
+------+----------+--------------------+
|  28.0|2016-02-07|         [14.0, 0.0]|
| 31.01|2016-02-07|[15.5050001144409...|
| 13.41|2016-02-04|[6.70499992370605...|
| 307.7|2015-02-17|[153.850006103515...|
| 22.09|2016-02-05|[11.0450000762939...|
+------+----------+--------------------+
only showing top 5 rows

Каков наилучший способ хранения двух (в этом примере) значений, возвращаемых udf, в отдельных столбцах? Прямо сейчас они печатаются как строки:

df.select('amount','trans_date').withColumn("test", test_udf("amount")).printSchema()

root
 |-- amount: float (nullable = true)
 |-- trans_date: string (nullable = true)
 |-- test: string (nullable = true)

Ответы на вопрос(1)

Ваш ответ на вопрос