2016-05-03 15 views
0

私は寄木細工のファイルを持っています。私はSparkを使ってロードしました。そして、値の1つはネストされたキー、値のペアです。どのように平らにするのですか?スパークの寄木細工のネストした値を平坦化

df.printSchema 
root 
|-- location: string (nullable = true) 
|-- properties: string (nullable = true) 


texas,{"key":{"key1":"value1","key2":"value2"}} 

おかげで、

+0

@G Gこれがあなたの質問に答えるなら、それを受け入れることができますか? - Ashish 21時間前 – Ashish

答えて

1

あなたのデータフレームにexplodeを使用し、それをscala4sを使用してJSON列を読み込む関数を渡すことができます。 Scala4sは簡単な解析APIを持っていますので、次のようになります。

val list = for { 
    JArray(keys) <- parse(json) \\ "key" 
    json @ JObject(key) <- keys 
    JField("key1", JString(key1)) <- key 
    JField("key2", JString(key2)) <- key 
} yield { 
    Seq(key1, key2) 
} 

これはデータフレームを平坦化します。

キーの列も追加する場合は、爆発後にwithColumnを使用できます(新しい列にもキーを保持します)。

+0

@Albertoこれがあなたの質問に答えるなら、それを受け入れることができますか? – Ashish

+0

:)申し訳ありません – Ashish

関連する問題