小编Ree*_*sum的帖子

在 pyspark 数据框中平面映射一个collect_set

我有两个数据框,我collect_set()在使用后在 agg 中使用groupbyflatMap聚合后生成数组的最佳方法是什么?

schema = ['col1', 'col2', 'col3', 'col4']

a = [[1, [23, 32], [11, 22], [9989]]]

df1 = spark.createDataFrame(a, schema=schema)

b = [[1, [34], [43, 22], [888, 777]]]

df2 = spark.createDataFrame(b, schema=schema)

df = df1.union(
        df2
    ).groupby(
        'col1'
    ).agg(
        collect_set('col2').alias('col2'),
        collect_set('col3').alias('col3'),
        collect_set('col4').alias('col4')
    )

df.collect()
Run Code Online (Sandbox Code Playgroud)

我得到这个作为输出:

[Row(col1=1, col2=[[34], [23, 32]], col3=[[11, 22], [43, 22]], col4=[[9989], [888, 777]])]
Run Code Online (Sandbox Code Playgroud)

但是,我想要这个作为输出:

[Row(col1=1, col2=[23, 32, 34], col3=[11, 22, 43], col4=[9989, 888, 777])]
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark

5
推荐指数
1
解决办法
4107
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

pyspark ×1