私はこのリンクhttps://gist.github.com/BenFradet/c47c5c7247c5d5d0f076を見つけました。これは、スパークのブロードキャスト変数が更新されている実装を示しています。これはエグゼキュータがブロードキャスト変数の最新の値を見る有効な実装ですか?スパークストリーミングと変更可能なブロードキャスト変数
0
A
答えて
1
あなたが参照しているコードは、Broadcast.unpersist()メソッドを使用しています。 Spark API Broadcast.unpersist()の方法をチェックすると、「エグゼキュータでこのブロードキャストのキャッシュされたコピーを非同期で削除します。ブロードキャストが呼び出された後に使用される場合は、各エグゼキュータに再送信する必要があります。 unpersist(ブーリアンブロッキング)メソッドがオーバーロードされています。このメソッドは、unpersistingが完了するまでブロックします。したがって、あなたのSparkアプリケーションでブロードキャスト変数をどのように使用しているかによって異なります。 sparkでは、ブロードキャスト変数を変更すると自動再ブロードキャストはありません。ドライバはそれを再送する必要があります。 Sparkのドキュメントによれば、エグゼキュータ・ノードでの処理の不一致を避けるために、ブロードキャスト変数(Immutable)を変更しないでください。ただし、ブロードキャスト変数のライフ・サイクルを制御する場合は、unpersist()メソッドとdestroyスパークジラを参照してくださいhttps://issues.apache.org/jira/browse/SPARK-6404
関連する問題
- 1. 変更可能なグローバル変数C++
- 2. 変更可能な変数はクロージャからアクセス可能です
- 3. 不変型と変更可能なC#
- 4. PHPの更新可能な変数
- 5. 変更可能な内部で不変の変更可能な修正方法
- 6. バインド可能関数とサイズ変更イベント
- 7. 複数のスレッド間で変更可能な静的変数
- 8. Django Admin:変更可能なDjango Admin内の変数/定数
- 9. 変更可能なHashMap値を変更可能なコレクションで更新します。
- 10. UILocalNotification - 変更可能なコピー
- 11. サイズ変更可能なウィジェット
- 12. 変更可能なイテレータ>
- 13. サイズ変更可能なバブルチャート
- 14. 変更不可能なスタック
- 15. 変更不可能なマップ
- 16. 変更不可能なアイテム
- 17. C++変更可能なミューテックス
- 18. 変更可能なスカラ不変マップ、いつ変更可能ですか?
- 19. 変更可能なアイコンとテキストのカスタムシェイプビュー
- 20. 変数内の可能な変数
- 21. 変更可能で不変なデータアクセス
- 22. サイズ変更可能な要素を持つサイズ変更可能なjQuery UIウィジェット
- 23. RDDのブロードキャスト変数を更新
- 24. y [i]をCの変更可能な変数にする
- 25. 活字体コンパイラエラー変更可能な列挙型のメンバ変数
- 26. 可能な変数のリスト
- 27. 可能なホスト変数
- 28. 可能なグローバルインベントリ変数
- 29. SCHEME変更可能な機能
- 30. キャッシュ高価なデータ - 変更可能なメンバ変数VS機能スコープ静
ありがとうございます。私のユースケースは、リモートサーバからいくつかのKey-Valueデータをダウンロードし、ハッシュマップとして保存し、ローカルルックアップのためにすべてのエグゼキュータにそれを送信/ブロードキャストすることです。その後、2分後に新しいデータがある場合はリモートサーバーにチェックし、取得したら取得し、ハッシュマップに追加し、NEWデータでローカルルックアップを行うすべてのエグゼキュータに送信/ブロードキャストします。私は2つのブロードキャスト変数を使ってこれを達成できると思います。 – sunillp
最初のデータを含むbroadcast_var1がブロードキャストされます。その後、データ変更時に、新しいデータを含むbroadcast_var2がブロードキャストされ、broadcast_var1は固定されません(ブロッキング=真)。以前に "broadcast_var1"を使用していたエグゼキュータは、例外を取得し、そのスイッチに基づいて "broadcast_var2"になります。次回は、データの変更についても同じことが繰り返されますが、2つのブロードキャスト変数の役割が変更されます。あなたはこれが可能である/有効であると思いますか? – sunillp
ブロードキャスト変数は、大きなデータをエグゼキュータに1回送信するために使用する必要があります。頻繁ではありません。 2分ごとにunpersist(blocking = true)を呼び出すと、ストリーム処理のパフォーマンスが低下します。また、ブロードキャスト変数の値にあるロジックにも依存します。 Key-Valueデータの量あなたはクロージャーの中に置くことができないので、エグゼキュータにシリアライズできますか? – abaghel