タスクの構成

この項では、タスクの作成と構成について説明します。

タスクについて

タスクは、ジョブの一部としてフローにまとめたり、ジョブ自体に昇格したりできる、コードの機能ブロックです。

タスクは、Oracle AI Data Platform Workbenchのすべてのワークフローの主要な構成要素です。タスクのタイプによって、使用するコードのタイプが決まります。ジョブの一部として、タスクを接続して、ジョブの実行時の順序と優先度を決定します。

タスク・タイプ 説明
ノートブック・タスク アクセス可能なノートブックに保存されたタスク
Pythonタスク Pythonプログラミング言語のスニペットを使用するタスク
If/else条件 if/else条件を使用するタスク
ネストされたジョブ・タスク 既存のジョブとそのタスクをネストされたタスクとして使用するタスク
JARタスク Java Archive (JAR)ファイルにコンパイルされたScalaまたはJavaコードを実行できるタスク。

複数のタスクがある場合、1つのタスクの成功または失敗によって後続のタスクを順番にトリガーできるタスクの依存関係のセットを作成できます。依存関係は、複数のタスクを持つジョブでのみ作成できます。ノートブック・タスクの作成を参照してください。

タスクは、相互に並行して実行できます。これを行うには、同じワークフロー内の別のタスクの成功または失敗に依存する複数のタスクを作成し、それらを同時に実行します。

タスクは、ネットワークの中断、リソースの使用不可、一時的なサービス障害などの一時的な問題によって失敗することがあります。このような場合、AIデータ・プラットフォーム・ワークベンチは、タスクの作成時に構成した再試行ポリシーに基づいて、タスクを自動的に再試行します。これらのポリシーの一部として、次のものを定義します。

  • 再試行回数:最大再試行回数。
  • 再試行間隔:再試行間の待機時間。

AI Data Platform Workbenchでは、標準タスクの再試行に加えて、タイムアウト時に再試行もサポートされています。リソースの制約または処理が遅いためにタスクの実行時間制限を超過し、これらのシナリオでのみ再試行する場合は、自動的に再試行をトリガーするように選択できます。これらの再試行ポリシーにより、ワークフローの自己回復性が向上し、手動操作なしでタスクの実行が成功する可能性が高くなります。

コンピュート・ログを使用するタイミングと方法

タスクがリソースまたはシステム関連のエラー(メモリー不足エラーやCPU使用率が制限を超えているなど)で失敗した場合は、コンピュート・ログを確認する必要があります。

長い待機時間、予期しない再試行またはジョブ・パフォーマンスのボトルネックが発生した場合は、Sparkログを確認します。これらのログは、タスクをバックアップするコンピュート・クラスタのドライバ・ノードおよびワーカー・ノードに関するインサイトを提供し、考えられる問題の原因の特定に役立ちます。

ログを確認する方法のガイダンスは、特定のジョブ実行のモニターを参照してください。

ジョブに関連付けられたコンピュート・インスタンスのメタデータおよびログを表示するには、適切なコンピュート・レベルのRBAC権限が必要です。コンピュート・ログを表示できない場合は、管理者に連絡してこれらの権限を取得してください。詳細は、権限についてを参照してください。

Pythonタスクの作成

Pythonスクリプトを使用するワークフロー・ジョブの一部としてタスクを作成できます。

  1. ホーム・ページで、「ワークフロー」をクリックします。
  2. タスクを作成するジョブをクリックします。
  3. 「タスクの追加」をクリックします。
  4. タスクの名前を入力します。
  5. 「タスク・タイプ」で、「Python」を選択します。
  6. 「参照」をクリックし、タスクとして追加するPythonスクリプトに移動します。「選択」をクリックします。
  7. Pythonタスクのコンピュート・クラスタ(まだアタッチされていない場合)を選択します。
  8. 失敗時にタスクが試行する再試行回数を選択します。0より大きい値を選択した場合、ジョブ実行が再試行までに待機する時間、およびタイムアウト時に再試行を試みるかどうかも指定する必要があります。

    再試行回数が1以上の場合のタスク再試行オプション

  9. 「依存」から、このタスクに依存させるタスクを選択します。「実行条件」ドロップダウンから、その依存関係に対する条件付きレスポンスを選択します。
  10. 「キー」および「値」を指定して、パラメータを追加します。「パラメータの追加」をクリックして、複数のパラメータを指定します。

ノートブック・タスクの作成

AIデータ・プラットフォーム・ワークベンチで構築したノートブックを使用してタスクを作成します。

  1. ホーム・ページで、「ワークフロー」をクリックします。
  2. タスクを作成するジョブをクリックします。
  3. 「タスクの追加」をクリックします。
  4. タスクの名前を入力します。
  5. 「タスク・タイプ」で、「ノート」を選択します。
  6. 「参照」をクリックし、タスクとして追加するノートブックに移動します。「選択」をクリックします。
  7. ノートブック・タスクのコンピュート・クラスタ(まだアタッチされていない場合)を選択します。
  8. 失敗時にタスクが試行する再試行回数を選択します。0より大きい値を選択した場合、ジョブ実行が再試行までに待機する時間、およびタイムアウト時に再試行を試みるかどうかも指定する必要があります。

    再試行回数が1以上の場合のタスク再試行オプション

  9. 「依存」から、このタスクに依存させるタスクを選択します。「実行条件」ドロップダウンから、その依存関係に対する条件付きレスポンスを選択します。
  10. 「キー」および「値」を指定して、パラメータを追加します。「パラメータの追加」をクリックして、複数のパラメータを指定します。

ネストされたジョブ・タスクの作成

別のワークフロー・ジョブとその含まれるタスクを、別のワークフロー内のネストされたタスクとして使用できます。

  1. ホーム・ページで、「ワークフロー」をクリックします。
  2. タスクを作成するジョブをクリックします。
  3. 「タスクの追加」をクリックします。
  4. タスクの名前を入力します。
  5. 「タスク・タイプ」で、「ネストされたジョブ・タスク」を選択します。
  6. 「ジョブ」ドロップダウン・リストから、タスクを作成する既存のジョブを選択します。
  7. 失敗時にタスクが試行する再試行回数を選択します。0より大きい値を選択した場合、ジョブ実行が再試行までに待機する時間、およびタイムアウト時に再試行を試みるかどうかも指定する必要があります。

    再試行回数が1以上の場合のタスク再試行オプション

  8. 「依存」から、このタスクに依存させるタスクを選択します。「実行条件」ドロップダウンから、その依存関係に対する条件付きレスポンスを選択します。
  9. 「キー」および「値」を指定して、パラメータを追加します。「パラメータの追加」をクリックして、複数のパラメータを指定します。

If/Elseタスクの作成

カタログ・データに基づいてif/else条件を使用して、タスクがトリガーされるかどうかを判断するタスクを作成できます。

  1. ホーム・ページで、「ワークフロー」をクリックします。
  2. タスクを作成するジョブをクリックします。
  3. 「タスクの追加」をクリックします。
  4. タスクの名前を入力します。
  5. 「タスク・タイプ」で、「If/Else」を選択します。
  6. タスクがトリガーされるかどうかを決定する条件を入力します。複数の条件を設定するには、「追加」アイコン 「追加」をクリックします。
  7. 条件式を入力します。
  8. 失敗時にタスクが試行する再試行回数を選択します。0より大きい値を選択した場合、ジョブ実行が再試行までに待機する時間、およびタイムアウト時に再試行を試みるかどうかも指定する必要があります。

    再試行回数が1以上の場合のタスク再試行オプション

  9. 「依存」から、このタスクに依存させるタスクを選択します。「実行条件」ドロップダウンから、その依存関係に対する条件付きレスポンスを選択します。
  10. 「キー」および「値」を指定して、パラメータを追加します。「パラメータの追加」をクリックして、複数のパラメータを指定します。

JARタスクの作成

Java Archive (JAR)ファイルにコンパイルされたScalaまたはJavaコードを実行するタスクを作成できます。

ノート:

依存ライブラリ・ファイルは、予期しない動作を回避するために、作成時にOracle AI Data Platform Workbenchクラスタ・ランタイムと互換性のあるJDK、ScalaまたはSparkバージョンを使用する必要があります。
  1. ホーム・ページで、「ワークフロー」をクリックします。
  2. タスクを作成するジョブをクリックします。
  3. 「タスクの追加」をクリックします。
  4. タスクの名前を入力します。
  5. 「タスク・タイプ」で、「JARタスク」を選択します。
  6. 「メイン・クラス名」に、実行するメイン・メソッドを含むクラスのフルネームを指定します。たとえば、ProcessTransactionです。このクラスは、依存ライブラリとして追加されたファイルの1つに含まれている必要があります。
  7. 「依存ライブラリ」で、「追加」をクリックします。
  8. 依存ライブラリ・ファイルのソースを選択してください。前述のmainクラス・メソッドを含むライブラリを少なくとも1つ含める必要があります。
    • 「ワークスペース」または「ボリューム」で、AI Data Platform Workbenchワークスペースまたはボリュームを参照し、ライブラリとして追加する1つ以上のファイルを選択して、「追加」をクリックします。
    • 「ワークスペースへのファイルのアップロード」で、ライブラリとしてアップロードするファイルのローカル・マシンを参照し、「追加」をクリックします。
  9. 「コマンドライン引数」で、メイン・クラスに渡す空白区切りの引数を指定します。
  10. 失敗時にタスクが試行する再試行回数を選択します。0より大きい値を選択した場合、ジョブ実行が再試行までに待機する時間、およびタイムアウト時に再試行を試みるかどうかも指定する必要があります。

    再試行回数が1以上の場合のタスク再試行オプション

  11. 「依存」から、このタスクに依存させるタスクを選択します。「実行条件」ドロップダウンから、その依存関係に対する条件付きレスポンスを選択します。
  12. 「キー」および「値」を指定して、パラメータを追加します。「パラメータの追加」をクリックして、複数のパラメータを指定します。

タスクを変更

タスクの既存の属性(名前、タイプ、パラメータなど)を変更して、ジョブでの機能を変更できます。

  1. ホーム・ページで、「ワークフロー」をクリックします。
  2. タスクを構成するジョブをクリックします。
  3. 「タスク」タブで、編集するタスクをクリックします。
  4. 右側の「タスクの詳細」ペインで、必要に応じてタスク属性を変更します。変更は自動的に保存されます。

タスク・ログの表示

ジョブ内の個々のタスクの実行ログを表示できます。

  1. ホーム・ページで、「ワークフロー」をクリックします。
  2. 「ジョブ実行」をクリックします。
  3. タスク・ログを表示するジョブをクリックします。
  4. タスク・ノードをクリックして、そのタスクのログを表示します。

タスクを削除

タスク・ノードをジョブから削除することで、タスクを削除できます。

  1. ホーム・ページで、「ワークフロー」をクリックします。
  2. タスクを削除するジョブをクリックします。
  3. タスク・ノードで、「アクション」をクリックし、「ノードの削除」をクリックします。
  4. 「削除」をクリックします