インクリメンタル・コンパイル

データ プロセッシング ライブラリは、可能な限り複雑なコンパイルパターンをインクリメンタルに実行します。 これは、増分実行によって、非増分実行と同じ出力が生成されるという原理に基づいています。これは、高速化されたものにすぎません。 バージョン N から N+1 へのインクリメンタル・コンパイルで、バージョン N+1 をコンパイルして変更されたペイロードを公開する場合とは異なるコミットが生成される場合、これはエラーと見なされます。 以下 Driver の条件が満たされた場合、はインクリメンタル・コンパイルを防止できます。

  • ライブラリは、呼び出し元の環境によって、 1 つ以上の入力カタログを完全にコンパイルするように指示されます。たとえば、ChangesまたはNoChangeの代わりに、Job説明にReprocessが含まれています。
  • 出力カタログが空であるため、最初の実行はインクリメンタルにできません。
  • 出力カタログには、コンパイル中の変更と論理的に互換性のない依存関係が含まれています。 たとえば、出力カタログに対する最新のコミットの依存関係では、このコミットはバージョン N の入力カタログ A から派生したものであることが示されています。 コンパイル中の変更がカタログ A のバージョン N からバージョン N+X への変更をコンパイルするようにライブラリがスケジュールされるように一致する場合、インクリメンタルコンパイルが許可されます。 それ以外の場合、カタログ A の変更をバージョン N+Y からバージョン N+Z にコンパイルするようライブラリがスケジュールされている場合、これは無効と見なされるため、インクリメンタルコンパイルは試行されませんが、バージョン N+Z はまだコンパイルされています。
  • ソフトウェアの変更 : Fingerprints ライブラリのコードと最後に実行したコードが現在のものと比較され、フィンガープリントが一致しない場合はインクリメンタルコンパイルが試行されません。
  • 設定の変更 : Fingerprints 最後に実行した設定のうち、アクティブな設定の現在の設定と比較され、フィンガープリントが一致しない場合は、インクリメンタルコンパイルは試行されません。
  • 共有変数の変更 : コンパイラーは、ライブラリ外部からのグローバル変数または外部コンテンツに依存する場合があります。 次の章を参照してください。

外部コンテンツにアクセスします

コンパイラーは、入力カタログにないコンテンツなどの外部コンテンツにアクセスできます。 処理中のライブラリは外部データへのアクセスをブロックせず、ブロックすることもできませんが、コンパイラーはライブラリにこのデータを認識させる必要があります。

コンパイラが非インクリメンタルコンパイラでない限り、処理中のライブラリはこの外部コンテンツを認識する必要があります。 これは、外部コンテンツが変更された場合、一部の出力パーティションでは更新された外部から計算されたコンテンツが保持され、変更されていないパーティションでは以前の外部から計算されたコンテンツが保持されるため、増分実行することは安全ではないためです。 出力カタログの整合性が失われたり、無効になったり、予期しない動作が発生する可能性があります。 そのため、外部コンテンツが変更された場合 Driver は、すべての出力パーティションを更新するために、非増分で 1 回実行されるようににに通知することが重要です。 その後の実行は、再度増分されます。

DriverSetupインターフェイスのいずれかのセットアップパターンの子を実装している間、DriverContextおよびFingerprintsにアクセスできます。 addCustomHash メソッドを使用して、外部コンテンツのハッシュを登録します。 このハッシュが前の実行で登録されたハッシュと異なる場合 Driver 、は増分的に実行されません。 ハッシュはとともに永続化 Fingerprints され、自動的にチェックされます。

外部コンテンツのハッシュを登録しないと、インクリメンタルコンパイルが安全でないか、または望ましくない最終的な動作を引き起こす可能性があります。 結果を把握している限り、ハッシュの登録は必須ではありません。

コンテンツが大きい場合は、broadcastパッケージのtoBroadcastメソッドを使用できます。 これにより、ユーザーが指定した値からインクリメンタルコンパイルを行うための安全な方法で Spark ブロードキャストが作成されます。 Spark ブロードキャストのメカニズムによって、コンテンツがノードに効果的に配布されます。 詳細については、「実行者ノードへの入力レイヤーのブロードキャスト」を参照してください。

」に一致する結果は 件です

    」に一致する結果はありません