与Python等效的Spark
SQL为
pyspark.sql.functions.arrays_zip:
pyspark.sql.functions.arrays_zip(*cols)集合函数:返回结构的合并数组,其中第N个结构包含输入数组的所有第N个值。
因此,如果您已经有两个数组:
from pyspark.sql.functions import splitdf = (spark .createDataframe([('abc, def, ghi', '1.0, 2.0, 3.0')]) .toDF("column_1", "column_2") .withColumn("column_1", split("column_1", "s*,s*")) .withColumn("column_2", split("column_2", "s*,s*")))您可以将其应用于结果
from pyspark.sql.functions import arrays_zipdf_zipped = df.withColumn( "zipped", arrays_zip("column_1", "column_2"))df_zipped.select("zipped").show(truncate=False)+------------------------------------+|zipped |+------------------------------------+|[[abc, 1.0], [def, 2.0], [ghi, 3.0]]|+------------------------------------+我们可以将结果合并
transform(?如何使用变换高阶函数,类型错误:列不是可迭代-
如何遍历数组类型()? :
df_zipped_concat = df_zipped.withColumn( "zipped_concat", expr("transform(zipped, x -> concat_ws('_', x.column_1, x.column_2))"))df_zipped_concat.select("zipped_concat").show(truncate=False)+---------------------------+|zipped_concat |+---------------------------+|[abc_1.0, def_2.0, ghi_3.0]|+---------------------------+注意事项 :
高阶功能
transform,并
arrays_zip已在Apache中星火2.4引入。



