放送変数(groadcastのvarible)はドライバプログラムが計算の参加ノードに送ら作成しSparkContextを実行している読み取り専用変数です。効率的に作業する必要がある人のために、このような機械学習と同じデータノード・アプリケーションのシナリオを、アクセスします。私たちは、放送変数を作成SparkContextにブロードキャストメソッドを呼び出すことができます。
放送変数もアクセス方法方法は、ノードが配置されている可変非ドライバプログラムの値を呼び出すことで、アクセスすることができる(すなわち、労働者)
変数は、パフォーマンスを向上させるために、無線リソースの使用を最適化することができます
利点は、変数をブロードキャスト:いないすべてのタスクは、変数のコピーですが、唯一のコピー各ノードの執行になったため。このケースでは、大幅に減少し、生成変数のコピーを作成することができます。
放送変数は、最初の時間は、我々はDrvier上のコピーを持っています。タスク実行時に、あなたは、可変データ放送を利用したい、この時間は最初のBlockManager、変数のコピーを入手しようとする試みを、対応する彼の母国キュータにあり、ローカル、BlockManagerであれば、おそらくリモートドライバから上記の変数のコピーを取得します;より最近の、そしてローカルBlockManagerに保存されているから、他のノードのBlockManagerキュータからのアクセスが向上する。キュータ対応するメモリやディスク上のデータを管理するためのBlockManagerは、責任、執行後のタスクを、直接使用しますローカルコピーでBlockManager。
コードを必要としているスパーク分散実行は、それぞれのランニングキュータタスクに渡されます。いくつかの読み取り専用の固定データ(データDBから読み出しなど)、各時間における各ドライバのタスクにブロードキャストする必要があり効率が低くなります。無線変数は、各エグゼキュータに(予め放送)のみ可変ブロードキャストを可能にします。BlockManager変数から再取得したノードではなく、ドライバから変数を取得する毎に、タスクエグゼキュータ、それによって効率を向上させることができます。
Executorの場合にのみ、最初のタスクは、タスクBlockManagerからこのノードをすべての関連データを取得した後、放送データを取得し、開始します。
使用
-
放送[T]オブジェクトを作成するために呼び出すSparkContext.broadcast方法。いずれのタイプはとても達成シリアライズすることができます。
-
オブジェクトにアクセスすることにより、プロパティの値を変更します
-
変数は、(この値は、他のノードに影響を与えずに変更される)読み取り専用の値として扱われるべき一度だけ、各ノードに送られます。
例