2016-07-06 12 views
0

各ファイルのサイズが約10 MBのフォルダから約20,000 JSONファイルを読み込んでいます。以下のコードは、これらのファイルを読むのに約30分かかります。Sparkでjsonを効率的に読む

タイプD4(Azure HDInsight)のワーカーノードが25個あります。

var rawJson = sqlContext.read.json("/data/*.json") 

以下は私が使用しているジョブ構成です。

"--driverMemory"、 "7グラム"、 "--executorCores"、 "3"、 "--executorMemory"、 "4グラム"、 "--numExecutors"、 "32"

JSONスキーマは次のようになります。異なるファイルには、[プロパティ]セクションに異なる数のフィールドが含まれています。

{ 
    "name": "AssetName", 
    "time": "2016-06-20T11:57:19.4941368-04:00", 
    "data": { 
    "type": "EventData", 
    "dataDetails": { 
     "name": "EventName", 
     "measurements": {   
     "StartTime": 61058529, 
     "EndTime": 61058737, 
     "Duration": 208, 
     "ID": 26509812, 
     "Version": 24720 
     }, 
     "properties": { 
     "identifier": "Foo", 
     "EventId": "6b613d8D-2f65-447e-bf6d-9e9133c0b803", 
     "TagGuid": "{9E4fe7c1-cf8a-4527-fd27-c0c58c0b1fed}", 
     "property1": "val1", 
     "property2": "val2", 
     "property3": "val3", 
     "property4": "False" 
     } 
    } 
    } 
} 

は、より多くのリソースを追加することなく、これらのJSONファイルを読み込むのより効率的な/パフォーマンスの高い方法はありますか?

ありがとうございます!

+0

何台のワーカーを使用していますか?どのような種類のディスクとファイルシステムですか?あなたはスキーマを知っていますか? – zero323

+1

@mtoto 'jsonFile'はずっと前から廃止されていて、それがもっと速くなる理由はありません。 – zero323

+1

HDFSファイルシステムを使用するワーカーマシン(Azure HDInsightsではD4タイプ)が25台あります。 – vijay

答えて

0

sqlContext.read.jsonメソッドは、パーティションの数を入力として使用しません。 RDD [文字列]を作成して並列処理を制御してみてください!

val jsonRDD = sc.textFile("/data/*.json", 100) 
val rawJson = sqlContext.read.json(jsonRDD) 
関連する問題