0
jsonの5テラバイトをjson4s
を使用してカスタムオブジェクトのRDDに読み込もうとしています。それぞれ約100 MBの50,000ファイルがあります。何らかの理由で、エグゼキュータのサイズを16Gに設定すると、次のエラーが発生します。次のようにSpark - JSONの解析中にタスクスケジューラのエラーが発生しました
ERROR TaskSchedulerImpl: Lost executor foo on bar: Remote RPC client
disassociated. Likely due to containers exceeding thresholds, or network
issues. Check driver logs for WARN messages.
私のコードは次のとおりです。
val input = sc.textFile(inPath)
val operations = input.mapPartitions(row => {
row.flatMap(record => {
try {
implicit val formats = DefaultFormats // formats not serializable
Some(parse(record).extract[MyClass])
} catch {
case e: Exception => None
}
})
})
データのギグの数百に読んだとき、私はこの問題を得ることはありません。もし私がエクゼキュータメモリを55Gに増やしても動作しますが、これは非効率的です。結局のところ、圧縮された各ファイルは100 MBに過ぎず、おそらく1 GBを超える容量は解凍されません。私は、8ギガバイトまたは4ギガバイトのエグゼキュータをトンネルで回転させてデータを読み取ることができると思っていただろう。
スパークはメモリ内の計算です。多くのデータがある場合は、多くのメモリが必要になります。 –
多くのエグゼクティブを通じてこれを達成できませんでしたか?なぜあなたは1人のエグゼキュータでより多くのメモリを必要としますか? – Luke
このエラーの原因は何ですか?それは 'ダイレクトバッファメモリ'オーバーフローや他のメモリセクションのオーバーフローによって引き起こされていますか?あなたが提供したエラーメッセージは、複数の問題が発生した場合に表示されます。完全なエラーの詳細を提供してください。 –