ネストされたgzファイルに対して、Spark 1.4.1を使用してデータフレーム列の内容を分割するのが難しいです。私はmap関数を使ってgzファイルの属性をマップしました。ネストされたgzファイルのためにSpark 1.4.1を使用してデータフレーム列の内容を分割する
データの形式は次のとおりです。
"id": "tag:1234,89898",
"actor":
{
"objectType": "person",
"id": "id:1234",
"link": "http:\wwww.1234.com/"
},
"body",
私は列を分割し、データファイルを読み込むには、次のコードを使用しています。
val dataframe= sc.textFile(("filename.dat.gz")
.toString())
.map(_.split(","))
.map(r => {(r(0), r(1),r(2))})
.toDF()
dataframe.printSchema()
しかし、結果は次のようなものです:これは正しくないフォーマットである
root
--- _1: string (nullable = true)
--- _2: string (nullable = true)
--- _3: string (nullable = true)
。スキーマを次の形式にします:
----- id
----- actor
---objectType
---id
---link
-----body
何か間違っていますか?私はこのコードを使用して、自分のデータセットで何らかの処理を行い、いくつかの変換を適用する必要があります。
こんにちはbrian、そのa gzファイル。私はgzファイルをアップロードする必要があり、スパークはそれをサポートしていないので、データはJSONのように見えますが、そうではありません。 – user2122466
@ user2122466 Hmmmおそらく、それを読み込み、それをフラット(レコードごとに1つのオブジェクト) 'RDD [String]'にマップし、 'DataFrameReader'''json'関数を新しいRDD 。 DataFrameReaderのドキュメントへのリンクは次のとおりです。https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/sql/DataFrameReader.html –
こんにちはブライアン、情報ありがとうございます。私にそのコード例を教えてください。私はかつてこれを使ったことがない。 – user2122466