【问题标题】:pyspark: join tables based on nested keyspyspark:基于嵌套键连接表
【发布时间】:2017-11-13 16:49:32
【问题描述】:

我有两个带有以下示例架构的表。表 A 的键嵌套在表 B 的列表中。我想根据表 A 键连接表 A 和表 B 以生成表 C。表 A 中的值应该是表 C 中基于的嵌套结构表 B 中的 keyAs 列表。如何使用 pyspark 执行此操作?谢谢!

表A

root 
|-- item1: string (nullable = true) 
|-- item2: long (nullable = true) 
|-- keyA: string (nullable = true) 

表 B

root 
|-- item1: string (nullable = true) 
|-- item2: long (nullable = true) 
|-- keyB: string (nullable = true) 
|-- keyAs: array (nullable = true) 
| |-- element: string (containsNull = true)

表C

root 
|-- item1: string (nullable = true) 
|-- item2: long (nullable = true) 
|-- keyB: string (nullable = true) 
|-- keyAs: array (nullable = true) 
| |-- element: string (containsNull = true) 
|-- valueAs: array (nullable = true) 
| |-- element: struct (containsNull = true) 
| | |-- item1: string (nullable = true) 
| | |-- item2: long (nullable = true) 
| | |-- keyA: string (nullable = true)

【问题讨论】:

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


    【解决方案1】:

    为了加入A和B,你需要先爆炸B.keyAs,像这样:

    tableB.withColumn('keyA', explode('keyAs')).join(tableA, 'keyA')
    

    要创建嵌套结构,请参阅this answer

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2021-07-19
      • 1970-01-01
      • 2022-06-23
      • 2016-10-16
      • 1970-01-01
      • 2016-04-27
      • 2016-07-14
      • 1970-01-01
      相关资源
      最近更新 更多