Konfiguration von Umgebungsvariablen für serverlose Jobs

Umgebungsvariablen bieten deployment-spezifische Konfigurationen für Anwendungscode in serverlosen Lakeflow-Jobs-Aufgaben. Definiere benannte Umgebungsvariableneinträge in einem Job und wähle dann für jede Aufgabe, die sie benötigt, einen Eintrag aus. Während der Beta konfigurieren Sie Umgebungsvariablen über die Jobs-API.

Von Bedeutung

Dieses Feature befindet sich in der Betaversion. Um es zu verwenden, muss ein Workspace-Administrator die Umgebungsvariablen in Lakeflow-Jobs auf der Vorschau-Seite aktivieren. Siehe Manage Azure Databricks Previews.

Diese Seite beschreibt Umgebungsvariablen für serverlose Jobs. Serverless Compute unterstützt keine Init-Skripte. Wenn deine Workload auf klassischer Berechnung läuft, siehe Set und nutze Umgebungsvariablen mit Init-Skripten.

Wie Umweltvariablen funktionieren

Umgebungsvariablen-Einträge werden auf Jobebene definiert. Jeder Eintrag hat einen einzigartigen Schlüssel, enthält Inline-Variablen und funktioniert mit allen serverlosen Aufgabentypen. Ein Eingabeschlüssel kann nur Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten. Jeder Inline-Variablenname muss mit einem Buchstaben oder Unterstrich beginnen und darf nur Buchstaben, Zahlen und Unterstriche enthalten.

Jede Aufgabe wählt einen einzigen Umgebungsvariableneintrag mit environment_variables_key und erhält nur die Variablen dieses Eintrags. Einträge werden nie kombiniert, und ein Eintrag kann nicht von einem anderen erben. Eine Aufgabe, die weglässt environment_variables_key , erhält keine Umgebungsvariablen.

Umgebungsvariablen sind nur für Anwendungscode verfügbar, der im Aufgabenprozess ausgeführt wird. Sie sind für die Spark-Ausführungslogik nicht verfügbar.

Anforderungen

  • Ein Workspace-Administrator hat die Umgebungsvariablen in Lakeflow Jobs auf der Vorschau-Seite aktiviert. Siehe Manage Azure Databricks Previews.
  • Aufgaben, die in der serverlosen Umgebung Version 5 oder höher laufen.

Einschränkungen

Benutzerdefinierte Funktionen (UDFs) können keine Umgebungsvariablen lesen, da UDFs in der Spark-Ausführungslogik und nicht im Task-Prozess ausgeführt werden.

Folgende Grenzen gelten:

Konfiguration Begrenzung
Einträge für Umweltvariablen pro Job 10
Einstiegsschlüssel 1–100 Zeichen; Muss passen ^[\w-_]+$
Inline-Variablen pro Eintrag 100
Name der Inline-Variablen 1–256 Zeichen; Muss passen ^[A-Za-z_][A-Za-z0-9_]*$
Wert der Inline-Variablen 512 Zeichen

Konfiguration von Umweltvariablen mit der Jobs-API

Verwenden Sie das Feld environment_variables in einer POST /api/2.2/jobs/create Anfrage, um Einträge für Umgebungsvariablen zu definieren. Legen Sie environment_variables_key für jede Aufgabe fest, die einen Eintrag verwendet.

Das folgende Beispiel definiert separate Umgebungsvariableneinträge für eine Notizbuch-Aufgabe und eine JAR-Aufgabe. Jede Aufgabe wählt ihren Eintrag mit environment_variables_key, und jeder serverlose Task-Typ kann einen Eintrag auf die gleiche Weise verwenden:

{
  "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"
      }
    }
  ]
}

Du kannst Einträge für Umgebungsvariablen auch über die Vorgänge Job aktualisieren, Alle Einstellungen für einen Job überschreiben und Einmalige Ausführung übermitteln konfigurieren.

Umgebungsvariablen im Anwendungscode lesen

Anwendungscode liest konfigurierte Variablen aus der Prozessumgebung aus.

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")

Weitere Ressourcen