pyspark / dataframe-groupby(s),模式转换

时间:2018-09-04 02:02:32

标签: apache-spark pyspark apache-spark-sql

我想执行一些转换以获得所需的输出:

之前:

Column 1 | Column 2 | Column 3 
--------------------------------
NBA    | BULLS   | ['Michael', 'Jordan', '23'] 
NBA    | BULLS   | ['Scottie', 'Pippen', '33'] 
NBA    | LAKERS  | ['Kobe', 'Bryant', '24'] 

之后:

Column 1 | Column 4 
--------------------------------
NBA    | [BULLS : [['Michael', 'Jordan', '23'],['Scottie', 'Pippen', '33']] 
          ,LAKERS : ['Kobe', 'Bryant', '24']]

模式化

之前:

root
|-- string
|-- string
|-- struct
    |-- string
    |-- string
    |-- int

之后:

root
|-- string
|-- array:string
    |-- array:struct
        |-- string
        |-- string
        |-- int

编辑:

在建议下,我能够做到这一点:

df.groupby('Column 1', 'Column 2')
   .agg(collect_list(struct('Column 3')).alias('Column 4'))
   .groupby('Column 1')
   .agg(collect_list(struct('Column 2', 'Column 4')).alias('Column 5'))

0 个答案:

没有答案