2017-11-09 17 views
0

これでAPI呼び出しから大きなJson文字列が得られました。その文字列の一部をCassandraに保存します。私はJsonの文字列を構造体のようなテーブルに解析しようとしていますが、いくつかのフィールドしかありません。全体的なスキーマは次のようになります。複雑なJsonスキーマをカスタムスパークデータフレームに変換する

printSchema()

そして私はレグナム、日付や値フィールドを使用して、私のテーブル構造をしたいです。

table

をしかし、あなたが見ることができるように、日付と値のフィールドは配列です: はsqlContext.read.json(vals).select(explode('register) as 'reg).select("[email protected]","reg.data.date","reg.data.value").showで、私はこのようにテーブルを取得することができます。レコードごとに1つの要素があり、レコードごとに対応するregnumを複製したいと考えています。どんな助力も非常に感謝しています。

答えて

1

DataFrameDatasetにキャストし、次にflatMapにキャストすることができます。

df.select("[email protected]","reg.data.date","reg.data.value") 
    .as[(Long, Array[String], Array[String])] 
    .flatMap(s => s._2.zip(s._3).map(p => (s._1, p._1, p._2))) 
+0

驚くばかりの男は、魅力的な作品です。私は本当にスカラのスキルを磨く必要があります。ありがとう。 –

+0

私はちょうど別のバンプに遭遇しました。 [(Long、Array [String]、Array [String])]および[(Long、String、String)]]であるレコードがあるとどうなりますか?ケースマッピングを作成するにはどうしたらいいですか?再度、感謝します! –

+0

同じ列にありますか? – nabongs

関連する問題