Skip to content

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

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

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

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

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

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

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 payload

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 ["*"]または[0 ... 6] 。ここにおいて(Sunday=0) ["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": ["*"], } 時計の分ダイヤルがで定義された値に到達するごとに実行されます。これは、他のすべてのフィールドにアスタリスクがついているからです。
1時間ごとに実行 "schedule": { "minute": [0], "hour": ["*"], "month": ["*"] "dayOfWeek": ["*"], "dayOfMonth": ["*"], } 時計がで指定した「分」に到達するごとに実行されます。

この例は毎日、1:00AM2:00AM3:00AM、のように実行されます。
毎日正午直前に実行 "schedule": { "minute": [59], "hour": [11], "month": ["*"] "dayOfWeek": ["*"], "dayOfMonth": ["*"], } 時計の分ダイヤルがで定義された分に到達するごとに実行され、時ダイヤルがで定義された数に到達するごとに実行されます。

。この例では、毎日11:59 AMに実行されます。
半年に一度、1時間ごとに実行されます。 "schedule": { "minute": [0], "hour": ["*"], "month": [1, 6] "dayOfWeek": ["*"], "dayOfMonth": ["*"], } 時計の分ダイヤルがで定義された分に到達するごとに、かつ、その月が1月(1)または6月(6)である場合にのみ実行されます。
半年に一度、月曜日と土曜日のみ、1時間ごとに実行 "schedule": { "minute": [0], "hour": ["*"], "month": [1, 6] "dayOfWeek": ["mon", "sun"], "dayOfMonth": ["*"], } 上記と同じですが、dayOfWeekを指定したため、間隔は指定した曜日にのみ実行されます。
半期に一度、月曜と土曜のみ、1時間おきに実行。しかし、その月の1日と10日にも実行する。 "schedule": { "minute": [0], "hour": ["*"], "month": [1, 6] "dayOfWeek": ["mon", "sun"], "dayOfMonth": [1, 10], } 上記と同じですが、dayOfWeekdayOfMonth両方 が指定されているので、これらの値は互いに除外されるのではなく、互いに追加されます。

この例では、dayOfWeekdayOfMonthで定義された両方の時に実行されます。1日と10日が月曜日と日曜日になる年だけと思われるかもしれませんが、そうではありません。

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

ジョブ定義は、 enabledTrue に設定された場合にのみ、スケジューラによって実行されます。以前はスケジュールされたジョブとして 実行されていたが、現在は停止する必要のあるジョブ定義がある場合は、単にエンドポイントをPATCHしますが、そうするためにenabledをに設定しますFalse。ジョブが現在実行中の場合、これは関係なく実行を終了します。

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

{
    "enabled": false
}

容量制限

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

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

各組織につき、1日あたりのジョブ実行数には制限があります。自社運用の場合、環境変数を変更することにより、この制限を変更できますBATCH_PREDICTIONS_JOB_SCHEDULER_MAX_NUMBER_OF_RUNS_PER_DAY_PER_ORGANIZATION。クラウド上では、この制限はデフォルトで1000になっています。

備考:この制限は、組織単位ですべてのスケジュールされたジョブにわたり設定されていますので、1つのスケジュールされたジョブに1日あた1000りの最大実行時間が設定されている場合、その組織ではそれを超えてスケジュールされたジョブをアクティブ化することはできません。

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

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

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

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

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

ユーザーが設定を誤ったために実行できないジョブ定義を作成し、中止された場合、これは5連続した失敗の後、enabledその機能を自動的に無効化します。したがって、同じペイロードをPOSTする前に、既存の/batchPredictionsエンドポイントを使用して、そのソリューションが、確認済みの作業ペイロードが/batchPredictionJobDefinitionsまで機能するかどうかをテストすることをお勧めします。自社運用の顧客の場合、この連続する失敗のカットオフポイントは、BATCH_PREDICTIONS_JOB_SCHEDULER_FAILURES_BEFORE_ABORT環境変数を変更することにより調整できます。


更新しました April 15, 2022
Back to top