Skip to content

アプリケーション内で をクリックすると、お使いのDataRobotバージョンに関する全プラットフォームドキュメントにアクセスできます。

バッチ予測ジョブのスケジュール

ジョブ定義の作成後、/batchPredictions/fromJobDefinitionエンドポイントを介してジョブ定義を手動で実行する代わりにスケジュールに基づいてジョブ定義を実行することを選択できます。

スケジュールされたバッチ予測ジョブは、DataRobotがジョブの実行を処理する場合を除き、通常のバッチ予測ジョブと同じように機能します。

バッチ予測ジョブの実行をスケジュールするには、ここで説明されているように、最初に定義を作成する必要があります。

バッチ予測REST APIルートの詳細については、 DataRobot REST APIリファレンスドキュメントをご覧ください。

ジョブ定義をスケジュールする

APIは以下のように、キーワードenabledscheduleオブジェクトを受け入れます。

POST https://app.datarobot.com/api/v2/batchPredictionJobDefinitions

{
    "deploymentId": "<deployment_id>",
    "intakeSettings": {
        "type": "dataset",
        "datasetId": "<dataset_ud>"
    },
    "outputSettings": {
        "type": "jdbc",
        "statementType": "insert",
        "credentialId": "<credential_id>",
        "dataStoreId": "<data_store_id>",
        "schema": "public",
        "table": "example_table",
        "createTableIfNotExists": false
    },
    "includeProbabilities": true,
    "includePredictionStatus": true,
    "passthroughColumnsSet": "all"
    "enabled": false,
    "schedule": {
        "minute": [0],
        "hour": [1],
        "month": ["*"]
        "dayOfWeek": ["*"],
        "dayOfMonth": ["*"],
    }
} 

Scheduleペイロード

scheduleペイロードは、ジョブを実行する間隔を定義します。これは、必要に応じ、さまざまな方法で組み合わせて複雑なスケジューリング条件を構築することができます。 オブジェクト内のすべての要素で、「毎回」の時間単位を表すアスタリスク["*"]または整数の配列(例:[1, 2, 3])のいずれかを入力して具体的な間隔を定義することができます。

キー 可能な値 説明
["*"]または[0 ... 59] [15, 30, 45] ジョブは、1日の毎時間ごとに、これらの分の値で実行されます。
時間 ["*"]または[0 ... 23] [12,23] ジョブを何時に実行するかを指定します。
["*"]または[1 ... 12] ["jan"] 文字列によって月を指定する場合は、3文字の略語または月のフルネームを入力しますが(jan、octoberなど)、同じ意味で使用できます。
dayOfMonthの日付が存在しない月は無視されます ({"dayOfMonth": [31], "month":["feb"]}. など)
dayOfWeek (Sunday=0)の場合、["*"]または[0 ... 6] ["sun"] ジョブを実行する曜日。文字列の場合、曜日の3文字略語とフルネームは 同じ意味で使用できます(たとえば、sunday、Sunday、sun、Sunのどれを入力しても[0]にマッピングされます)。

備考:このフィールドで指定した内容は dayOfMonthに追加されます。つまり、ジョブは dayOfMonthで指定された日付とこのフィールドで定義された日の両方で実行されます。
dayOfMonth ["*"]または[1 ... 31] [1, 25] ジョブを実行する日付。指定できる値は[1 ... 31]または["*"] (毎日)です。

備考:このフィールドはdayOfWeekなので、ジョブはこのフィールドで定義された日、 およびdayOfWeekによって指定された日の両方で実行されます(たとえば、日付は1日、2日、3日に加えて、毎週火曜日です)。 dayOfMonth["*"]に設定され、dayOfWeekが定義されている場合、スケジューラーは一致する月dayOfWeekの すべての日でトリガーされます(火曜日の2日、9日、16日、23日、30日など)。 2月31日などの無効な日付は無視されます。

備考

ジョブを実行する日の時刻を指定する際、scheduleペイロードでUTCを使用する必要があります。ローカルタイムゾーンはサポートしていません。 DST(夏時間)を計算に入れるには、現地時間に従ってスケジュールを更新します。

間隔 説明
5分ごとに実行 "schedule": { "minute": [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55], "hour": ["*"], "month": ["*"] "dayOfWeek": ["*"], "dayOfMonth": ["*"], } Executes every time the minute dial of a clock reaches the number(s) defined in minute, since all other fields are with asterisks.
1時間ごとに実行 "schedule": { "minute": [0], "hour": ["*"], "month": ["*"] "dayOfWeek": ["*"], "dayOfMonth": ["*"], } Executes every time the clock reaches the minute(s) defined in minute.

This example executes every day at 1:00 AM, 2:00 AM, 3:00 AM, and so forth.
毎日正午直前に実行 "schedule": { "minute": [59], "hour": [11], "month": ["*"] "dayOfWeek": ["*"], "dayOfMonth": ["*"], } Executes every time the minute dial of a clock reaches the minutes(s) defined in minute, and the same when the hour dial reaches the number(s) defined in hour.

This example executes every day at 11:59 AM.
半年おきに1時間ごとに実行 "schedule": { "minute": [0], "hour": ["*"], "month": [1, 6] "dayOfWeek": ["*"], "dayOfMonth": ["*"], } Executes every time the minute dial of a clock reaches the minute(s) defined in minute, and only when the month is January (1) or June (6).
月曜日と土曜日のみ、半年に1回、1時間おきに実行 "schedule": { "minute": [0], "hour": ["*"], "month": [1, 6] "dayOfWeek": ["mon", "sun"], "dayOfMonth": ["*"], } Same as above, but with dayOfWeek specified, the interval is only executed on the days specified.
半年おきに1時間ごと、月曜日と土曜日のみ、加えて、毎月1日と10日に実行 "schedule": { "minute": [0], "hour": ["*"], "month": [1, 6] "dayOfWeek": ["mon", "sun"], "dayOfMonth": [1, 10], } Same as above, but with both dayOfWeek and dayOfMonth specified, these values add to each other, not excluding.

This example executes on both the times defined in dayOfWeek and dayOfMonth, and not, as could be believed, only on those years where the 1st and 10th are Mondays and Sundays.

スケジュールされたジョブを無効化する

ジョブ定義は、enabledTrueに設定された場合にのみ、スケジューラによって実行されます。 過去にスケジュールされたジョブとして実行されていても、すぐに停止すべきジョブ定義がある場合、enabledFalseに設定したエンドポイントをPATCHします。 ジョブが現在実行中の場合、これは関係なく実行を終了します。

PATCH https://app.datarobot.com/api/v2/batchPredictionJobDefinitions/<job_definition_id>

    {
        "enabled": false
    } 

容量制限

スケジューラーには、ジョブを実行できる頻度と一度に実行できるジョブの数に制限が設定されています。

1日あたりの合計実行回数

各組織は、1日あたりのジョブ実行数に制限があります。 セルフマネージドAIプラットフォームの場合、環境特徴量BATCH_PREDICTIONS_JOB_SCHEDULER_MAX_NUMBER_OF_RUNS_PER_DAY_PER_ORGANIZATIONを変更することでこの制限を変更できます。 クラウドの場合、この制限はデフォルトで1000です。

この制限は、組織ごとにスケジュールされたすべてのジョブ全体に適用されることに注意してください。そのため、1つのスケジュールされたジョブの最大実行時間は1日あたり1000で、その組織はスケジュールされたジョブをそれ以上アクティブ化できません。

スケジュールはベストエフォートです。

組織全体で同時に実行されているさまざまな定義の負荷によっては、スケジューラーはスケジュールの正確な秒ですべてのジョブを実行することを保証できません。 ただし、ほとんどの場合、スケジューラーは、スケジュールの5秒以内にジョブをトリガーするリソースを備えることになります。

同じ定義を同時に実行する

1つのジョブ定義をスケジュールに基づいて複数回実行することはできません。 つまり、スケジュールジョブの実行に時間がかかって最初の間隔が完了する前に次の間隔がトリガーされる場合、ジョブは拒否され、中止されます。 これは、実行中のジョブが完了するまで発生し続けます。

失敗したジョブの自動無効化

ユーザーが、設定ミスで実行できずに中止されるジョブ定義を作成すると、enabled特徴量は、5連続して失敗した後に自動で無効化されます。 したがって、同一のペイロードをPOSTし、/batchPredictionJobDefinitionsに対して機能するペイロードを確認する前に、既存の/batchPredictionsエンドポイントを使用してソリューションが機能するかどうかをテストしてから、することを推奨します。 セルフマネージドAIプラットフォームのお客様の場合、BATCH_PREDICTIONS_JOB_SCHEDULER_FAILURES_BEFORE_ABORT環境特徴量を変更することで、連続する障害のこのカットオフポイントを調整できます。


更新しました April 19, 2023