2017-01-08 5 views
1

pysparkのメモリ管理に関する質問があります。pysparkでのラージオブジェクトの使用

私は大規模な読み取り専用辞書を持っています。これはMapReduceの各マッパーによって照会可能でなければなりません。このグローバルオブジェクトは非常に大きく、各マッパーのメモリに収まらない。

このユースケースを実装するためのベストプラクティスは何ですか?私の試みは今のところ失敗しています。

ありがとう、

Ido。

答えて

0

オブジェクトのサイズによって異なります。

  • メモリよりもはるかに大きい場合は、RDD/DataFrameを使用して結合する方がよいでしょう。
  • かなり小さい場合は、ファイルに書き込むことができます(たとえば、shelve)。ファイルを配布します。スパークはそのために使用することができるSparkFilesメカニズムを持っています。

    トラブルに、

    事は各マッパーは、各反復で全体の辞書RDDをスキャンする必要があるということである私を:

私はあなたのコメントのこの部分があることを認めざるを得ません。その場合の私の最初の推奨事項は、より良いアルゴリズムを検索することです。

+0

すぐにお返事ありがとうございます。実際に私はまだ辞書のサイズはわかりませんが、恐らくそれはメモリよりもはるかに大きいでしょう。問題は、各マッパーが各反復で辞書RDD全体をスキャンする必要があることです。このアクションによって、メモリの問題によりシステム全体が失敗する可能性があります。問題は、メモリの問題を起こすことなく、各マッパーでアクセスできるようにグラフ辞書をどのように読み込むべきかということです。あなたはそれを詳しく教えてもらえますか?ありがとう! – sidodan

関連する問題