2016-11-15 2 views
0

IDとjsonパスの場合は、何が含まれているかをスパークテーブルがあります。jsonsから新しいテーブルへのスパークデータ変換

+----------------------+ 
    | ID |  Path  | 
    +----------------------+ 
    | 1 | "/test.json" | 
    +----------------------+ 

私はjsonsのすべてを解析し、このテーブルを反復処理する必要がある、と私は、私は1つのJSONを解析することができ、この

+----------------------------------------------+ 
    | ID | ParsedJson.Column1 | ParsedJson.Column2 | 
    +----------------------------------------------+ 
    | 1 | data 1    | data2    | 
    +----------------------------------------------+ 

のような新しいテーブルを作成する必要があります。どのように私はすべてのjsonsを解析し、上記のようなテーブルにデータをマージできますか?

アップデート:この後:

case class Media(Id: Integer, content: org.apache.spark.sql.DataFrame) 
var arrayOfFrames = jsonDF.collect.map(row => {Media(row.getInt(1), sqlContext.read.json("/mnt/" + row(5)))}) 

私は今、アレイの[メディア]を持っています。データフレームの内容は、解析されたJSONです。だから私の質問は、私は上記のスキーマのようなDataFrameにこのオブジェクトの配列を変換できますか?

+0

申し訳ありませんが、テーブルをフォーマットすることはできません:( – martonx

+0

なぜ編集できませんか? –

答えて

0

最後に、私はチェーンマップでこれを解決しました。

val arrayOfFrames = filteredFramePaths.collect.map(row => { Media(
    row.getInt(1), 
    sqlContext.read.json("/mnt/" + row(5)) 
) }).map(a => 
    {Media(a.id, a.content.withColumn("frame", explode($"frames")).select ($"frame.*"))} 
).map(a => 
    a.content.withColumn("id", lit(a.id)) 
).reduce((x, y) => x.union(y)) 
関連する問題