2016-12-08 10 views
0

ハッシュマップを更新する必要があります。私はJavaPairRDDを持っており、このラッパーには9種類のハッシュマップがあります。各ハッシュマップは約40〜50個のcrキーのキーを持っています。 2つのマップ(ReduceByKey in spark)をマージすると、JavaヒープメモリOutOfMemory例外が発生します。以下はコードスニペットです。ハッシュマップスパークでOutOfMemoryを与える大規模なデータセット

このメソッドは小さなデータセットで機能しますが、大きなデータセットでは失敗します。 9つの異なるハッシュマップに同じメソッドが使用されています。増加するヒープメモリを検索しましたが、クラスタ上で動作するので、これを増やす方法は考えられませんでした。私のクラスターのサイズも大きいです(ノード数300)。いくつかの解決策を見つけるのを助けてください。

ありがとうございました。

答えて

0

まず、私は3つのパラメータに焦点を当てたい:spark.driver.memory=45gspark.executor.memory=6gspark.dirver.maxResultSize=8gは当然の設定を取ってはいけない、これは上で動作何かである私のOOMエラーなしで設定します。使用可能なメモリの量をUIで確認します。あなたはエグゼクターにできるだけ多くの記憶を与えたいと思っています。 btw。 spark.driver.memoryはより多くのヒープスペースを可能にします。

0

私が見る限り、このコードはスパークドライバで実行されます。これらの2つのハッシュマップを2列のimeitimestampのDataFramesに変換することをお勧めします。 には、外部結合を使用してimeiに接続し、whenを使用して適切なタイムスタンプを選択します。 このコードは作業者に実行され、パラレル化され、結果的にメモリの問題にぶつかりません。運転手で実際にこれを行う予定がある場合は、Jarekの指示に従い、spark.driver.memoryを増やしてください。

関連する問題