- は、HDFSのテキストファイルからデータを読み込み、以下の操作を行い火花ジョブを書かれています。
- 重複をフィルタリングするためにdistinct()を呼び出します。
- はmapToPairフェーズを行うとreducebykeyコール
- 行うグループ化されたタプルの集約ロジックを実行してください
- pairRDD を生成します。
今#5
上のforeachを呼び出すここでは
- を行いカサンドラのDBへの呼び出し
- AWS SNSとSQSのクライアント接続
- を作成するには、いくつかのJSONレコードの書式設定を行います。
- 私はこの仕事を実行すると、それは
最初のステージを3つのスパークステージを作成
SNS/SQSにレコードを公開 - それは、ほぼ45秒かかります。明確な 第二段階を実行 - mapToPairとreducebykey = 1.5分
第三段階
を取る=取る19分 私はそうDB原因を打つ参照カサンドラ通話を切っ- 何をしたか
- これはあまり時間を割いて
私が見つけた
- 問題の一部は、SNS/SQS接続foreachのパーティションにその多くを服用し
を作成することです全体の60%以上
私はforeachPartition内でSNS/SQS Connectionを作成して接続を減らしています。我々は、これらは、シリアライズされないように私は、ドライバに接続オブジェクトを作成できません
も、より良い方法を持っています
私は5gのエグゼキュータ9の数、executoreコア15、ドライバメモリ2G、エグゼキュータのメモリを使用していない
私は16コアを使用しています64ギガのメモリ クラスタサイズ1つのマスター9スレーブすべて同じ設定 EMR展開スパークあなたはノードごとに1つのSNS/SQS接続を設定し、その後にそれを使用したいと思うようですね1.6
あなたは 'AWS SNSとSQSのクライアント接続 ' 60%の仕事の時間を割いたり、 'SNS/SQS'にこれを記録を公開しているを作成しますか?これら2つの間には若干の違いがあります。最初のケースでは、接続の作成回数を最小限に抑える必要があります。一方、2番目のケースでは、データを分散して(さらに多くの接続インスタンスを作成する)必要があります。面白い!!!! – code
それが第2のケースであれば、私は解答を掲示します。 – code