在 Spark Dataframe 中连接包含列表值的列

Concatenate columns containing list values in Spark Dataframe

我有一个数据框 (spark),它有 2 列,每列都有列表值。我想创建一个连接 2 列(以及列内的列表值)的新列。 例如

第 1 列有一个行值 - [A,B]

第 2 列有一个行值 - [C,D]

"The output should be in a new column i.e. "

第 3 列(新创建的列)的行值为 - [A,B,C,D]

注:- 列值的值存储在 LIST

请帮我用pyspark实现这个。 谢谢

我们可以使用 UDF 作为,

 >>> from pyspark.sql import functions as F
 >>> from pyspark.sql.types import *
 >>> udf1 = F.udf(lambda x,y : x+y,ArrayType(StringType()))
 >>> df = df.withColumn('col3',udf1('col1','col2'))

作为一般规则,如果您想加入更多列表列,我建议使用 chain from itertools

from itertools import chain
concat_list_columns = F.udf(lambda *list_: chain(*list_), ArrayType(StringType()))

因为 udf 占用大量内存,更好的解决方案是使用 pyspark 函数 concat:

from pyspark.sql import functions as F
F.concat(col1, col2, col3)