Этого можно добиться, создав пользовательскую функцию
import pyspark.sql.functions as f
import pyspark.sql.types as t
arrays_zip_ = f.udf(lambda x, y: list(zip(x, y)),
t.ArrayType(t.StructType([
# Choose Datatype according to requirement
t.StructField("first", t.IntegerType()),
t.StructField("second", t.StringType())
])))
df = spark.createDataFrame([(([1, 2, 3], ['2', '3', '4']))], ['first', 'second'])
Теперь результаты отображаются с spark <= 2.3 </strong>
df.select(arrays_zip_('first', 'second').alias('zipped')).show(2,False)
+------------------------+
|zipped |
+------------------------+
|[[1, 2], [2, 3], [3, 4]]|
+------------------------+
И результат с Spark версия 2.4
df.select(f.arrays_zip('first', 'second').alias('zipped')).show(2,False)
+------------------------+
|zipped |
+------------------------+
|[[1, 2], [2, 3], [3, 4]]|
+------------------------+