SQL スクリプトとノートブックをスケジュール設定する

SQL スクリプトとノートブックをスケジュール設定すると、データ探索ワークベンチ(Explore)で作成したアセットを運用できます。

SQL スクリプトやノートブックをスケジュール設定すると、あらかじめ決められた時間に 1 回または繰り返し実行される Dataplex タスクが作成されます。それぞれの実行時には、実行開始時間と終了時間、実行ステータス、ログ、生成された出力などの実行メタデータをキャプチャするジョブが作成されます。

スケジュール設定された SQL スクリプトやノートブックに対して実行がトリガーされると、ノートブックや SQL スクリプトの現在のバージョンが実行されます。つまり、ノートブックや SQL スクリプトをスケジュール設定し、そのコンテンツを後で更新した場合、更新はノートブックや SQL スクリプトのスケジュール設定された実行にも反映されます。

費用

スケジュール設定された SQL スクリプトおよびスケジュール設定されたノートブックは、Dataproc Serverless を使用してジョブ実行をトリガーします。使用は Dataproc の料金モデルに従って課金され、Dataplex ではなく Dataproc に表示されます。

始める前に

次のドキュメントに記載の前提条件を確認し、すべて揃えてください。

SQL スクリプトやノートブックのスケジュールで BigQuery API を使用する場合は、サービス アカウントに Service Usage ユーザーロール(roles/serviceusage.serviceUsageConsumer)を付与する必要があります。

既知の制限事項

  • Google Cloud コンソールを使用してノートブックをスケジュール設定する場合、選択した環境で構成された追加の Python パッケージは、スケジュール設定されたノートブックに対して実行時に利用できません。それを実行時に利用できるようにするには、必要な追加パッケージを使用してコンテナ イメージを参照するノートブック スケジュールを作成する必要があります。詳細については、カスタム パッケージを使用してノートブックをスケジュール設定するをご覧ください。

  • ノートブックをスケジュール設定するときに、Google Cloud コンソールでカスタム コンテナ イメージを参照することはできません。コンソールではなく gcloud CLI を使用してください。

  • 一旦作成したスケジュールは編集できません。スケジュール パラメータを更新するには、新しいパラメータでスケジュールを再作成する必要があります。

  • スケジュールで使用する SQL スクリプトやノートブックの特定のバージョンを定義することはできません。スケジュールがトリガーされると、SQL スクリプトやノートブックの現在のバージョンが使用されます。

  • Google Cloud コンソールを使用して SQL スクリプトやノートブックをスケジュール設定する場合は、デフォルトのサブネットワークが使用されます。別のネットワークやサブネットワークを指定するには、gcloud CLI を使用します。

Explore の既知の制限事項も確認してください。

SQL スクリプトのスケジュールを作成、管理する

スケジュール設定された SQL スクリプトのランタイム構成

SQL スクリプトがスケジュール設定されると、Dataplex タスクとして動作します。Google Cloud コンソールを使用してスケジュールを作成すると、スケジュール設定された SQL スクリプトの対応するタスク ランタイム パラメータは、次のマッピングに基づいて、その SQL スクリプトの環境から継承されます。

環境構成パラメータ スケジュール設定された SQL スクリプト タスク構成パラメータ
メインディスクのサイズ コンテナ イメージ / プロパティ:
   spark.dataproc.driver.disk.size
   spark.dataproc.executor.disk.size
ノード数 バッチ / エグゼキュータの数
ノードの最大数 バッチ / 最大エグゼキュータの数
イメージのバージョン 継承されない
JAR ファイル コンテナ イメージ / Java JARS
Python パッケージ 継承されない
追加プロパティ コンテナ イメージ / プロパティ

SQL スクリプトをスケジュール設定する

コンソール

  1. Google Cloud コンソールで、Dataplex の [探索] ページに移動します。

    Dataplex の [探索] に移動

  2. Spark SQL Script リストから 1 つの SQL スクリプトを選択するか、Spark SQL Editor で SQL スクリプトを開くことで、スケジュール設定する SQL スクリプトを選択します。

  3. [スケジュール] メニューで、[スケジュールを作成] をクリックします。

  4. [スケジュール名] フィールドに、スケジュール設定されたインスタンスの名前を入力します。

  5. [スケジュール オプション] セクションで、SQL スクリプトを 1 回だけ実行するか、繰り返し実行するかを選択します。

    1. [1 回だけ実行] を選択した場合は、[スタート] メニューのオプションを使用して、SQL スクリプトをすぐに実行するか、スケジュール設定した時間に実行するかを指定します。スケジュールによる実行の場合は、開始日と実行時間を指定します。

    2. [繰り返し] を選択した場合は、SQL スクリプトを実行するタイミングを、毎日、毎週、毎月、cron 式で指定されたカスタム スケジュールのいずれかに指定します。また、最初のスケジュール実行の開始日と実行時間も指定します。

  6. [結果の保存先] セクションで、次の操作を行います。

    1. [出力フォルダ名] フィールドで、[参照] をクリックして、スクリプト出力を保存する Cloud Storage バケット内のフォルダを選択します。

    2. [Select] をクリックします。

    3. スクリプトの出力形式を選択します。サポートされている形式は CSV、JSON、ORC、Parquet です。

  7. [スケジュール設定されたスクリプトの認証情報] セクションで、[ユーザー サービス アカウント] メニューからサービス アカウントを選択します。

  8. [スケジュール] をクリックします。

gcloud

gcloud CLI を使用して SQL スクリプトをスケジュール設定する方法については、SparkSQL タスクのスケジュール設定をご覧ください。

REST

API Explorer を使用してタスクを作成します。

SQL スクリプトのスケジュールを管理する

コンソール

SQL スクリプトのスケジュールすべてのリストを開く

  1. Google Cloud コンソールで、Dataplex の [処理] ページに移動します。

  2. [スケジュールされたクエリ] タブをクリックして、SQL スクリプト スケジュールのリストを表示します。

特定の SQL スクリプトのスケジュールすべてのリストを開く

  1. Google Cloud コンソールで、Dataplex の [探索] ページに移動します。

  2. 必要な SQL スクリプトを選択します。

  3. [スケジュール] メニューで、[スケジュールを表示] をクリックします。

    [スケジュールされたクエリ] タブが開き、選択した SQL スクリプトでフィルタされた SQL スクリプト スケジュールのリストが表示されます。

SQL スクリプトのスケジュールの詳細を表示する

  1. [スケジュールされたクエリ] タブに移動し、必要な SQL スクリプト スケジュールを選択します。

  2. [詳細] タブをクリックすると、SQL スクリプト スケジュールの詳細と、スケジュール設定された SQL スクリプト コンテンツのプレビューが表示されます。

SQL スクリプトのスケジュールの有効化と無効化

  1. [スケジュールされたクエリ] タブに移動し、必要な SQL スクリプト スケジュールを選択します。

  2. [無効にする] をクリックしてアクティブな SQL スクリプト スケジュールを無効にします。

  3. [有効にする] をクリックして、非アクティブな SQL スクリプト スケジュールを有効にします。

既存の SQL スクリプトのスケジュールを削除する

  1. [スケジュールされたクエリ] タブに移動し、必要な SQL スクリプト スケジュールを選択します。

  2. [削除] をクリックして、既存の SQL スクリプト スケジュールを完全に削除します。

ログを表示して SQL スクリプトのスケジュールを管理する

  1. [スケジュールされたクエリ] タブに移動し、必要な SQL スクリプト スケジュールを選択します。

  2. [ジョブ] タブをクリックしてから、スケジュール設定された SQL スクリプト実行の [ジョブ ID] をクリックします。

  3. [ログを表示] をクリックして、Cloud Logging で動作する選択したスケジュール設定済みの SQL スクリプトに関連するログを表示します。

  4. Google Cloud コンソールで、[Dataproc バッチ ID] をクリックして Dataproc ページを開きます。対応する Dataproc サーバーレス セッションの詳細にアクセスします。

  5. Google Cloud コンソールで、[出力] ラベルの横にある [Cloud Storage で管理] をクリックして、Cloud Storage ページを開きます。SQL スクリプト実行出力を含む対応する Cloud Storage バケットの詳細にアクセスします。

gcloud

gcloud CLI を使用してスケジュール設定された SQL スクリプトをモニタリングする方法については、タスクのモニタリングの [gcloud] タブをご覧ください。

gcloud CLI を使用してスケジュール設定された SQL スクリプトを管理する方法については、スケジュールの管理の [gcloud] タブをご覧ください。

REST

REST を使用してスケジュール設定された SQL スクリプトをモニタリングする方法については、タスクをモニタリングするで [REST] タブをご覧ください。

REST を使用してスケジュール設定された SQL スクリプトを管理する方法については、スケジュールの管理の [REST] タブをご覧ください。

スケジュール設定された SQL スクリプトの出力

スケジュール設定された SQL スクリプトの実行ごとの出力は、次の構造で、Cloud Storage フォルダの指定した場所に保存されます。

CLOUD_STORAGE_FOLDER_LOCATION/projects/PROJECT_ID/locations/LOCATION_ID/lakes/LAKE_ID/tasks/TASK_ID/JOB_ID/QUERY_NUMBER

ノートブックのスケジュールを作成および管理する

スケジュール設定されたノートブックのランタイム構成

ノートブックは、スケジュール設定されると、Dataplex タスクとして実行されます。Google Cloud コンソールを使用してスケジュールを作成すると、スケジュール設定されたノートブックに対応するタスク ランタイム パラメータが、次のマッピングに基づいてそのノートブックの環境から継承されます。

環境構成パラメータ スケジュール設定されたノートブックのタスク構成パラメータ
メインディスクのサイズ コンテナ イメージ / プロパティ:
   spark.dataproc.driver.disk.size
   spark.dataproc.executor.disk.size
ノード数 バッチ / エグゼキュータの数
ノードの最大数 バッチ / 最大エグゼキュータの数
イメージのバージョン 継承されない
JAR ファイル コンテナ イメージ / Java JARS
Python パッケージ 継承されない
追加プロパティ コンテナ イメージ / プロパティ

カスタム パッケージを使用してノートブックをスケジュール設定する

インタラクティブ ノートブックの場合、Dataplex では、環境を構成するときに、その環境用にプロビジョニングされたユーザー セッションにインストールするカスタム Python パッケージを指定できます。このようなノートブックがスケジュール設定されている場合、そうしたノートブックには、その環境に構成されたカスタム Python パッケージが実行時に使用できません。デフォルトのランタイム環境には、Dataproc Serverless for Spark ランタイム バージョン 1.0 のコンポーネントのみがあります。スケジュール設定されたノートブックに対して実行時にカスタム Python パッケージを使用できるようにするには、必要なカスタム パッケージを含むカスタム コンテナ イメージを用意します。

Google Cloud コンソールを使用してノートブックをスケジュール設定するときに、カスタム コンテナ イメージを指定することはできません。コンソールではなく gcloud CLI を使用してください。詳細については、ノートブックをスケジュール設定するをご覧ください。

カスタム パッケージが構成されている環境でノートブックをスケジュール設定すると、次の警告が表示されます。

Selected environment  has additional Python packages configured.
These packages will not be available in the default runtime for the scheduled notebook
when scheduling in the Console. To make the required additional Python packages
available in the runtime, please create Notebook Schedule using gcloud command
instead, referencing a container image with required additional packages.

スケジュール設定されたノートブックのカスタム コンテナ イメージをビルドする

スケジュール設定されたノートブックのコンテナ イメージを作り、必要なカスタム Python パッケージをコンテナ イメージの dockerfile にインストールする方法については、Dataproc Serverless for Spark のカスタム コンテナ イメージをビルドするをご覧ください。

コンテナ イメージに次の conda パッケージがインストールされていることを確認します。

  • gcsfs
  • google-cloud-bigquery
  • google-cloud-storage
  • google-auth
  • ipykernel
  • papermill

gcloud コンポーネントをコンテナ イメージにインストールするには、コンテナ イメージの Dockerfile を開き、次の手順を行います。

  1. インストールする conda パッケージのリストに google-cloud-sdk パッケージを追加します。

  2. conda パッケージのインストール手順の後に、次の行を追加します。

    # (Optional) Installing gcloud components
    RUN gcloud components install alpha beta bq gsutil
    

ノートブックをスケジュール設定する

コンソール

  1. Google Cloud コンソールで、Dataplex の [探索] ページに移動します。

    Dataplex の [探索] に移動

  2. スケジュール設定するノートブックを選択するには、[Notebooks] ビューで 1 つのノートブックを選択するか、ノートブックの詳細ページでノートブックを開きます。

  3. [スケジュール] メニューで、[スケジュールを作成] をクリックします。

  4. [スケジュール名] フィールドに、スケジュール設定されたインスタンスの名前を入力します。

  5. [スケジュール オプション] セクションで、ノートブックを 1 回だけ実行するか、繰り返し実行するかを選択します。

    1. [1 回だけ実行] を選択した場合は、[スタート] メニューのオプションを使用して、ノートブックをすぐに実行するか、スケジュール設定した時間に実行するかを指定します。スケジュールによる実行の場合は、開始日と実行時間を指定します。

    2. [繰り返し] を選択した場合は、ノートブックを実行するタイミングを、毎日、毎週、毎月、cron 式で指定されたカスタム スケジュールのいずれかに指定します。また、最初のスケジュール実行の開始日と実行時間も指定します。

  6. [結果の保存先] セクションで、ノートブックの出力を保存する場所を選択します。

    1. [出力フォルダ名] フィールドで、[参照] をクリックして、ノートブックの出力を保存する Cloud Storage バケット内のフォルダを選択します。

    2. [Select] をクリックします。

    3. スクリプトの出力形式を選択します。サポートされている形式は CSV、JSON、ORC、Parquet です。

  7. [スケジュール設定されたノートブックの認証情報] セクションで、[ユーザー サービス アカウント] メニューからサービス アカウントを選択します。

  8. [パラメータ] セクションで、[新しく追加] をクリックして、ノートブックの実行パラメータを Key-Value ペアとして追加します。

  9. [スケジュール] をクリックします。

gcloud

Spark(Java または Python)タスクをスケジュール設定するに記載されている gcloud CLI コマンドを、次の追加パラメータを指定して実行します。

パラメータ 説明
--notebook 入力ノートブックのノートブック コンテンツへのパス。実行引数には環境変数としてアクセスできます。例: TASK_key=value
: ノートブックをタスクとしてスケジュール設定するための gcloud リファレンス ドキュメントには、--notebook パラメータの値としてノートブック ファイルの Cloud Storage URI を使用できることが記載されています。これはサポートされていません。--notebook パラメータには、ノートブック コンテンツへのパスのみを指定する必要があります。
--notebook-archive-uris 各エグゼキュータの作業ディレクトリに解凍されるアーカイブの Cloud Storage URI。サポートされているファイル形式は、JARtartar.gztgzzip です。
--notebook-file-uris 各エグゼキュータの作業ディレクトリに配置されるファイルの Google Cloud Storage URI。
Dataproc サーバーレスを使用するときタスクに必要なコンピューティング リソース
--notebook-batch-executors-count ジョブ エグゼキュータの数。
--notebook-batch-max-executors-count 構成可能なエグゼキュータの最大数。
notebook-batch-max-executors-countnotebook-batch-executors-count より大きい場合は、自動スケーリングが有効になります。
コンテナ イメージのランタイム構成
--notebook-container-image (省略可)ジョブのカスタム コンテナ イメージ。
--notebook-container-image-java-jars クラスパスに追加する Java JAR のリスト。有効な入力には、JAR バイナリへの Cloud Storage URI が含まれます。たとえば、「gs://BUCKET_NAME/my/path/to/file.jar」です。
--notebook-container-image-properties デーモン構成ファイルに設定するプロパティ。
プロパティキーは「prefix:property」の形式で指定します(例: core:hadoop.tmp.dir)。
詳細については、クラスタ プロパティをご覧ください。
インフラストラクチャの実行に使用される Cloud VPC ネットワーク
--notebook-vpc-network-tags ジョブに適用するネットワーク タグのリスト。
Cloud VPC ネットワーク ID。次の中から 1 つまで指定できます。
--notebook-vpc-network-name ジョブが実行される Cloud VPC ネットワーク。デフォルトでは、プロジェクトにある Default という Cloud VPC ネットワークが使用されます。
--notebook-vpc-sub-network-name ジョブが実行される Cloud VPC サブネットワーク。
ノートブック出力の場所
--execution-args ノートブック タスクの場合、次の引数は必須で、TASK_ARGS として渡す必要があります。
--execution-args=^::^TASK_ARGS="--output_location,CLOUD_STORAGE_URI_OF_OUTPUT_DIRECTORY"

ノートブックのスケジュール設定に使用される gcloud コマンドの例を次に示します。

gcloud dataplex tasks create sample-task --project=sample-project --location=us-central1 --lake=my-lake --trigger-type=ON_DEMAND --notebook="projects/my-project-id/locations/us-central1/lakes/my-lake/content/my-notebook.ipynb" --execution-service-account=associated-service-account@sample-project.iam.gserviceaccount.com  --execution-args=^::^TASK_ARGS="--output_location,gs://my-bucket/Demo" --notebook-batch-executors-count=2 --notebook-batch-max-executors-count=5 --notebook-container-image=container-image --notebook-container-image-java-jars=java-jar1,java-jar-2

REST

API Explorer を使用してタスクを作成します。

ノートブックのスケジュールを管理する

コンソール

ノートブックのスケジュールすべてのリストを開く

  1. Google Cloud コンソールで、Dataplex の [処理] ページに移動します。

  2. [スケジュール済みのノートブック] タブをクリックして、SQL スクリプト スケジュールのリストを表示します。

特定のノートブックのスケジュールすべてのリストを開く

  1. Google Cloud コンソールで、Dataplex の [探索] ページに移動します。

  2. 必要なノートブックを選択します。

  3. [スケジュール] メニューで、[スケジュールを表示] をクリックします。

    [スケジュールされたクエリ] タブが開き、選択したノートブックでフィルタされたノートブック スケジュールのリストが表示されます。

ノートブック スケジュールの詳細を表示する

  1. [スケジュールされたノートブック] タブに移動し、必要なノートブック スケジュールを選択します。

  2. ノートブック スケジュールの [詳細] と、スケジュール設定されたノートブック コンテンツのプレビューをクリックします。

ノートブック スケジュールの有効化と無効化

  1. [スケジュールされたノートブック] タブに移動し、必要なノートブック スケジュールを選択します。

  2. [無効にする] をクリックして、アクティブなノートブック スケジュールを無効にします。

  3. [有効にする] をクリックし、非アクティブなノートブックのスケジュールを有効にします。

既存のノートブック スケジュールを削除する

  1. [スケジュールされたノートブック] タブに移動し、必要なノートブック スケジュールを選択します。

  2. [削除] をクリックして、既存のノートブックのスケジュールを完全に削除します。

ログの表示してノートブック スケジュールを管理する

  1. [スケジュールされたノートブック] タブに移動し、必要なノートブック スケジュールを選択します。

  2. [ジョブ] タブをクリックしてから、表示するスケジュール設定されたノートブックの実行の [ジョブ ID] をクリックします。

  3. [プレビューの出力] セクションで、ノートブックの実行の出力を確認します。

  4. [ログを表示] をクリックして、Cloud Logging で選択したスケジュール設定されたノートブックの実行に関連するログを表示します。

  5. Google Cloud コンソールで、[Dataproc バッチ ID] をクリックして Dataproc ページを開きます。対応する Dataproc サーバーレス セッションの詳細にアクセスします。

  6. Google Cloud コンソールで、[出力] ラベルの横にある [Cloud Storage で管理] をクリックして、Cloud Storage ページを開きます。ノートブックの実行出力を含む、対応する Cloud Storage バケットの詳細にアクセスします。

gcloud

gcloud CLI を使用してスケジュール設定されたノートブックをモニタリングする方法については、タスクのモニタリングの [gcloud] タブをご覧ください。

gcloud CLI を使用してスケジュール設定されたノートブックを管理する方法については、スケジュールの管理の [gcloud] タブをご覧ください。

REST

REST を使用してスケジュール設定されたノートブックをモニタリングする方法については、タスクをモニタリングするの [REST] タブをご覧ください。

REST を使用してスケジュール設定されたノートブックを管理する方法については、スケジュールの管理の [REST] タブをご覧ください。

スケジュール設定されたノートブックの出力

スケジュール設定されたノートブックの実行ごとの出力は、次の構造で Cloud Storage フォルダの指定していした場所に保存されます。

CLOUD_STORAGE_FOLDER_LOCATION/projects/PROJECT_ID/locations/LOCATION_ID/lakes/LAKE_ID/tasks/TASK_ID/JOB_ID/QUERY_NUMBER

次のステップ