データバックフィルを使用すると、過去または将来の期間にわたってスケジュール済みノードを再実行できます。DataWorks は、選択された業務日時に一致する値でノードのスケジューリングパラメーターを自動的に置き換えます。
次の図は、データバックフィルを使用して MySQL データソースから MaxCompute の時間ベースのパーティションに増分データを書き込む例を示しています。
バックフィルインスタンスのモニタリングと管理に関する詳細な手順については、「データバックフィルインスタンスの運用と保守」をご参照ください。
グループ実行の動作
グループ実行は、並列で実行されるバックフィルインスタンスの日数を制御します。単一の日内の同時実行数は制御しません。
| モード | 動作 | 最適な用途 |
|---|---|---|
| グループ実行なし (デフォルト) | 異なる業務日時のインスタンスは、1日ずつ順次実行されます。 | 日付をまたぐ厳密なデータ依存関係を持つノード |
| グループ実行 (2~5グループ) | 複数の業務日時のインスタンスは、並列グループで実行されます。 | 迅速な追いつきが厳密な順序付けよりも重要な、独立した日次パイプライン |
時間単位および分単位のノードの場合、日中の同時実行数は自己依存によって個別に制御されます。
-
自己依存あり: 同日内のすべてのインスタンスは、時系列順に順次実行されます。
-
自己依存なし: 同日内のすべてのインスタンスは、同時に実行されます。
例: 自己依存ありで1週間分の時間単位データをバックフィルし、グループ実行を3に設定した場合、DataWorks は最大3つの業務日時を並列で実行しますが、各業務日時内ではインスタンスは引き続き順次実行されます。
自己依存の詳細については、「シナリオ2: ノードが前のサイクルの結果に依存する場合のスケジューリング依存関係の構成」をご参照ください。
よくある質問
バックフィルインスタンスが「時間待ち」ステータスになるのはなぜですか?
選択したスケジュール時刻が将来の場合、DataWorks はそれらのインスタンスをすぐに実行するのではなく、構成された実行時間までキューに入れます。
これらのインスタンスをすぐに実行するには、バックフィルジョブを送信する際にスケジュール時刻を無視するオプションを選択します。
「時間待ち」ステータス (黄色で表示) は、選択した業務日時が将来のスケジュール時刻に対応しており、インスタンスをすぐに実行するチェックボックスを選択しなかった場合にのみ表示されます。
昨日と今日の両方のインスタンスが「時間待ち」ステータスになるのはなぜですか?
これは想定される動作です。DataWorks の観点から見ると、昨日の業務日時を持つデータは今日実行されるようにスケジュールされています。特定の業務日時に対するバックフィルは、その業務日時に対する定期インスタンスを再実行することと同じであるため、そのスケジュール時刻は今日であり、まだ到達していない可能性があります。
これを確認するには、定期インスタンスパネルを開き、昨日の業務日時でフィルターします。これらのインスタンスのスケジュール時刻は今日です。
00:00 から 01:00 までデータをバックフィルすると、複数のインスタンスが生成されるのはなぜですか?
インスタンスの数は、選択された範囲 (両端を含む) 内にいくつのスケジュール実行時間が含まれるかによって異なります。
-
00:00 から 23:59 まで毎時間スケジュールされている時間単位ノードは、00:00~01:00 の範囲で2つのインスタンス (00:00 と 01:00 にスケジュール) を生成します。
-
00:00 から 23:59 まで30分ごとにスケジュールされている分単位ノードは、00:00~01:00 の範囲で3つのインスタンス (00:00、00:30、01:00 にスケジュール) を生成します。
大規模なバックフィル中にインスタンスが「リソース待ち」ステータスになるのはなぜですか?
各リソースグループには最大同時実行数制限があります。バックフィルインスタンスがその制限を超えると、超過インスタンスはキューに格納され、「リソース待ち」ステータス (黄色) を表示します。
以前のインスタンスが完了して容量が解放されるまでお待ちください。リソース使用量のモニタリングについては、「リソース待ち」をご参照ください。
バックフィルジョブが、ノードのランタイムが選択された業務日時範囲外であると報告するのはなぜですか?
時間単位および分単位のノードの場合、選択された期間には、ノードの構成されたスケジュール実行時間の少なくとも1つが含まれている必要があります。範囲に有効なスケジュール時刻が含まれていない場合、インスタンスは生成されず、バックフィルは失敗します。
ノードの構成されたスケジュール時刻の少なくとも1つを含む期間を選択してください。
選択したノードのインスタンスが生成されないのはなぜですか?
有効期間外のノードに対してはインスタンスは生成されません。ノードのスケジューリング構成を確認し、バックフィル日付がその有効期間内にあることを確認してください。
週次または月次ノードのデータをバックフィルするにはどうすればよいですか?
実際のスケジュール実行日の前日を業務日時として選択します。これは、業務日時とスケジュール日付に1日のオフセットがあるためです。
Business date = Scheduled date − 1 day
スケジュール実行日以外の日には、DataWorks は「週次/月次インスタンスのドライラン」ステータスを持つドライランインスタンスを生成します。これらの日にはタスクは実行されません。
例: 月次ノード
毎月1日の00:00に実行するようにスケジュールされているノードの場合、前月の最終日を業務日時として選択します。
スケジューリングパラメーター、業務日時、スケジュール時刻、および実際のランタイムの関係の詳細については、「スケジューリングパラメーター、業務日時、スケジュール時刻、および実際のランタイムの関係」をご参照ください。ドライランサイクルの詳細については、「シナリオ1: 週次および月次インスタンスのドライランサイクル」をご参照ください。