0

私は8つのCPUコアと30GBのメモリを持つそれぞれ5つのモードがあります。私は5GBのdataset1と65GBのデータセット2を持っているので、それらを結合してs3ファイルに保存する必要がありますシステムと私は、次のパラメータを設定します。パフォーマンス調整、outOfMemoryErrorGcとGC制限のパラメータを超えました

--num-executors 4 --spark.driver.memory 8g --executor-cores 5 --executor-memory 27g --conf spark.yarn.executor.memoryOverhead=824m 

をしかし、私はどこでも検索し、異なるパラメータを試してみましたが、まだ私はメモリエラーのうち、取得しています。 Gcオーバーヘッド制限を超えました。

はまた、Javaコードでこれを使用:stackoverflowの中

conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); 
conf.set("spark.kryo.registrator", AvgRegistrator.class.getName()); 
conf.set("spark.driver.maxResultSize", "5g"); 
conf.set("spark.broadcast.compress", "true"); 
conf.set("spark.shuffle.compress", "true"); 

ありません任意のソリューションは私のために働いています。だから誰も私にこの問題を取り除くためのより良い解決策を与えることができます。

Spark java.lang.OutOfMemoryError: Java heap space 

と私はこれを取得していますいくつかの時間:私はPARALELLISMのレベルを高めるためにしようと

java.lang.OutOfMemoryError: GC overhead limit exceeded 

答えて

1

(すなわち、より小さなものにあなたのパーティションを分割します)。

基本ストレージにpartitonsが数個しかない場合は、結合前にデータを手動で再分割する必要があります(データセットまたはRDDのrepartition()など)。さらに、spark.default.parallelismプロパティを設定すると、RDDを使用している場合に役立ちます。データセットを使用している場合は、spark.sql.shuffle.partitionsパラメータを考慮してください。このパラメータは、シャッフル操作のたびにパーティション数を定義します。

+0

すでに別のパーティションで試してみました。最初のデータセットに合計8GBのパーティションを200個、別のデータセットに合計65GBのデータを99個のパーティションに分割しています –

+0

これは十分な数のサウンドです。 –

+0

また、 'spark.yarn.executor.memoryOverhead'パラメータをデフォルトのものよりも小さい値に設定しています(executorMemory * 0.10と同じです)。 –

関連する問題