2

Pysparkの新機能です。次のコードを使用してJSONファイルを解析しようとしました。PysparkでのJSONファイルの解析

from pyspark.sql import SQLContext 
sqlContext = SQLContext(sc) 
df = sqlContext.read.json("file:///home/malwarehunter/Downloads/122116-path.json") 
df.printSchema() 

出力は次のとおりです。

ルート | - _corrupt_record:文字列(真= NULL可能)

df.show() 

は出力がJSONファイルは、次のようになります。この

+--------------------+ 
|  _corrupt_record| 
+--------------------+ 
|     {| 
| "time1":"2...| 
| "time2":"201...| 
| "step":0.5,| 
|   "xyz":[| 
|     {| 
|  "student":"00010...| 
|  "attr...| 
|  [ -2.52, ...| 
|  [ -2.3, -...| 
|  [ -1.97, ...| 
|  [ -1.27, ...| 
|  [ -1.03, ...| 
|  [ -0.8, -...| 
|  [ -0.13, ...| 
|  [ 0.09, -...| 
|  [ 0.54, -...| 
|  [ 1.1, -...| 
|  [ 1.34, 0...| 
|  [ 1.64, 0...| 
+--------------------+ 
only showing top 20 rows 

のように見えます。

{ 
    "time1":"2016-12-16T00:00:00.000", 

    "time2":"2016-12-16T23:59:59.000", 

    "step":0.5, 

    "xyz":[ 

    { 
    "student":"0001025D0007F5DB", 
     "attr":[ 
    [ -2.52, -1.17 ], 
    [ -2.3, -1.15 ], 
    [ -1.97, -1.19 ], 
    [ 10.16, 4.08 ], 
    [ 10.23, 4.87 ], 
    [ 9.96, 5.09 ] ] 
}, 
{ 
    "student":"0001025D0007F5DC", 
    "attr":[ 
    [ -2.58, -0.99 ], 
    [ 10.12, 3.89 ], 
    [ 10.27, 4.59 ], 
    [ 10.05, 5.02 ] ] 
} 
]} 

これを解析してこのようなデータフレームを作成すると助けてください。

Output Dataframe required

+1

JSONは、オブジェクトごとに複数行であるように思われます。その場合、これはsparkではサポートされていません(オブジェクトごとに1行と仮定しています)。 –

答えて

8

スパーク> = 2.2:ほとんどUNIVERがあり

spark.read.json(path_to_input, multiLine=True) 

スパーク< 2.2

あなたはJSONリーダーのためのmultiLine引数を使用することができますサルではなく、複数行のJSONファイルを読み取るために使用することができ、高価な解決策、:SparkContex.wholeTextFilesを使用して

  • 読むデータ。
  • ドロップキー(ファイル名)。
  • 結果をDataFrameReader.jsonに渡します。

限り、あなたのデータを持つ他の問題がないとして、それはトリックを行う必要があります。

spark.read.json(sc.wholeTextFiles(path_to_input).values())