サーバーレスジョブの環境変数を設定する

環境変数は、サーバーレスのLakeflow Jobsタスクにおけるアプリケーションコードのデプロイ専用設定を提供します。 ジョブに名前付き環境変数のエントリを定義し、それを必要とする各タスクごとにエントリを選択します。 ベータでは、ジョブAPIを通じて環境変数を設定します。

Important

この機能は ベータ版です。 これを使うには、ワークスペース管理者がPreviewsページからLakeflow Jobsの環境変数をオンにする必要があります。 Manage Azure Databricks プレビューを参照してください。

このページではサーバーレスジョブの環境変数について説明します。 サーバーレスコンピュートはinitスクリプトをサポートしていません。 もしワークロードがクラシックコンピュートで動作しているなら、「 環境変数をinitスクリプトで設定・使用」を参照してください。

環境変数の仕組み

環境変数のエントリはジョブレベルで定義されます。 各エントリは一意のキーを持ち、インライン変数を含み、すべてのサーバーレスタスクタイプに対応します。 エントリーキーは文字、数字、ハイフン、アンダースコアのみを含みます。 各インライン変数名は文字またはアンダースコアで始まらなければならず、文字、数字、アンダースコアのみを含めてはいけません。

各タスクは environment_variables_key を持つ単一の環境変数エントリを選択し、そのエントリの変数のみを受け取ります。 エントリーは決して結合されず、あるエントリーが別のエントリーから継承することはできません。 environment_variables_keyを省略したタスクは環境変数を受け取りません。

環境変数はタスクプロセス内で動作するアプリケーションコードにのみ利用可能です。 これらはSpark実行ロジックには対応できません。

必要条件

  • ワークスペース管理者がCommentationsページからLakeflow Jobsの環境変数を有効にしました。 Manage Azure Databricks プレビューを参照してください。
  • サーバーレス環境バージョン5以降で動作するタスク。

制限事項

ユーザー定義関数(UDF)は環境変数を読み取ることができません。なぜならUDFはタスクプロセスではなくSpark実行ロジック上で動作するためです。

以下の制限が適用されます:

Configuration 制限
ジョブごとの環境変数エントリ 10
入口キー 1文字から100文字まで;マッチしなければならない ^[\w-_]+$
エントリごとのインライン変数 100
インライン変数名 1〜256文字;マッチしなければならない ^[A-Za-z_][A-Za-z0-9_]*$
インライン変数値 512 文字

Jobs APIで環境変数を設定

POST /api/2.2/jobs/createリクエストのenvironment_variablesフィールドを使って環境変数のエントリを定義します。 エントリを使うタスクごとに environment_variables_key を設定しましょう。

以下の例では、ノートブックタスクとJARタスクごとに別々の環境変数エントリを定義しています。 各タスクは environment_variables_keyでエントリを選択し、サーバーレスタスクタイプならいつでも同じ方法でエントリを使用できます。

{
  "name": "serverless-environment-variables-example",
  "tasks": [
    {
      "task_key": "process_orders",
      "notebook_task": {
        "notebook_path": "/Workspace/Shared/process-orders"
      },
      "environment_key": "default",
      "environment_variables_key": "production"
    },
    {
      "task_key": "summarize",
      "spark_jar_task": {
        "main_class_name": "com.company.main"
      },
      "environment_key": "summary_env",
      "environment_variables_key": "summary_vars"
    }
  ],
  "environments": [
    {
      "environment_key": "default",
      "spec": {
        "environment_version": "5",
        "dependencies": []
      }
    },
    {
      "environment_key": "summary_env",
      "spec": {
        "environment_version": "5",
        "java_dependencies": ["/Volumes/company/default/prod/summarize.jar"]
      }
    }
  ],
  "environment_variables": [
    {
      "environment_variables_key": "production",
      "variables": {
        "APP_ENV": "production",
        "REGION": "us-west-2"
      }
    },
    {
      "environment_variables_key": "summary_vars",
      "variables": {
        "APP_ENV": "production",
        "LOG_LEVEL": "INFO",
        "LOG_FILE": "service.log"
      }
    }
  ]
}

また、環境変数のエントリを設定するには「 ジョブの更新」「ジョブ の全設定を上書きする」「 ワンタイム実行の提出 」も可能です。

アプリケーションコード内の環境変数を読み取る

アプリケーションコードはプロセス環境から設定済みの変数を読み込みます。

Python

import os

app_environment = os.environ["APP_ENV"]
region = os.environ["REGION"]

Scala

val appEnvironment = sys.env("APP_ENV")
val region = sys.env("REGION")

その他のリソース