私はSOのように火花ドキュメントおよびその他の関連するQ &を読んだが、私はまだスパーク放送変数、太字では特に、ステートメントのいくつかの詳細については不明だ:スパーク放送の不利な点は何ですか?
スパークアクションを介して実行されています分散シャッフル操作で区切られた一連のステージ。 Sparkは、各ステージ内のタスクに必要な共通データを自動的にブロードキャストします。この方法でブロードキャストされたデータは、シリアル化された形式でキャッシュされ、各タスクを実行する前にデシリアライズされます。つまり、ブロードキャスト変数を明示的に作成するは、複数のステージにわたるタスクが同じデータを必要とする場合、または非直列化形式でデータをキャッシュする場合に重要です。
- 「共通データ」とは何ですか?
- 変数が1段階でのみ使用されている場合、ブロードキャストはそのメモリフットプリントに関係なく有用ではありませんか?
- ブロードキャストは効果的に各エグゼキュータの変数を「参照」するため、複数回コピーするのではなく、どのシナリオで放送が悪い考えですか?なぜこの放送の振る舞いがデフォルトのスパークの振る舞いではないのですか?
ありがとうございました!
私は放送しても、変数はエグゼキュータごとにシリアライズしてデシリアライズする必要があります(ただし、各エグゼキュータ内のタスク間で共有されます)。Q1については、リスト/マップ/セットを持っていれば自動的にブロードキャストされるのかどうか、私の質問はどのような種類/種類のデータが「自動的に」ブロードキャストされるのでしょうか?私はカスタムオブジェクトを持っている場合(シリアル化可能と仮定して) – newway
私はあなたの最初の質問を誤解しました。私はあなたの質問への答えを持っている参照を追加しました。 – code
'私は放送であっても、実行者ごとにシリアル化してデシリアライズする必要がありますが(各エグゼキュータ内のタスク間で共有されます)、ブロードキャスト変数のドキュメントは明示的にブロードキャスト変数を作成することは、複数のステージ間で同じデータが必要な場合や、デシリアライズされた形式でデータをキャッシュすることが重要な場合 – code