Я пытался использовать массив (столбец)
Использование pyspark.sql.functions.array
, кажется, работает для меня.
from pyspark.sql.functions import array
df.withColumn("num_of_items", array("num_of_items")).show()
#+-----+------------+
#|col_1|num_of_items|
#+-----+------------+
#| A| [1]|
#| B| [2]|
#+-----+------------+
и даже создание функции для возврата списка, принимая значение int в качестве входных данных.
Если вы хотите использовать созданную вами функцию, вы должны сделать ее udf
и указать тип возвращаемого значения:
from pyspark.sql.types import ArrayType, IntegerType
from pyspark.sql.functions import udf, col
to_array_udf = udf(to_array, ArrayType(IntegerType()))
df.withColumn("num_of_items", to_array_udf(col("num_of_items"))).show()
#+-----+------------+
#|col_1|num_of_items|
#+-----+------------+
#| A| [1]|
#| B| [2]|
#+-----+------------+
Но желательно по возможности избегать использования udf
с: См. Функции Spark и производительность UDF?