2017-11-13 13 views
0

私は以下の例のスキーマを持つ2つのテーブルを持っています。テーブルAのキーはテーブルBのリストに入れ子になっています。テーブルAとテーブルBをテーブルAのキーに基づいて結合してテーブルCを生成したいと思います。テーブルAの値はテーブルCの入れ子構造にする必要があります表BのkeyAsのリスト。どのようにpysparkを使ってこれを行うことができますか?ありがとう!pyspark:ネストされたキーに基づいてテーブルを結合する

Aを結合するための

表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) 

答えて

1

、あなたはこのように、最初のB.keyAsを爆発する必要がありますB:

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

入れ子構造の作成については、this answer

を参照してください。
関連する問題