Configurer les variables d’environnement pour les tâches serverless

Les variables d’environnement fournissent au code de l’application une configuration spécifique au déploiement dans les tâches Lakeflow Jobs sans serveur. Définissez des entrées nommées dans les variables d’environnement sur une tâche, puis sélectionnez une entrée pour chaque tâche qui en a besoin. Pendant la bêta, vous configurez les variables d’environnement via l’API Jobs.

Important

Cette fonctionnalité est en version bêta. Pour l’utiliser, un administrateur d’espace de travail doit activer les variables d’environnement dans les emplois Lakeflow depuis la page des aperçus . Consultez Gérer les préversions d’Azure Databricks.

Cette page décrit les variables d’environnement pour les tâches serverless. Le calcul serverless ne prend pas en charge les scripts d’init. Si votre charge de travail fonctionne sur le calcul classique, voir Définir et utiliser les variables d’environnement avec des scripts d’initiation.

Comment fonctionnent les variables d’environnement

Les entrées des variables d’environnement sont définies au niveau du poste. Chaque entrée possède une clé unique, contient des variables en ligne et fonctionne avec tous les types de tâches serverless. Une touche d’entrée ne peut contenir que des lettres, des chiffres, des traits d’union et des soulignements. Chaque nom de variable en ligne doit commencer par une lettre ou un tiret bas et ne peut contenir que des lettres, des chiffres et des tirets bas.

Chaque tâche sélectionne une seule entrée de variable d’environnement avec environment_variables_key et ne reçoit que les variables de cette entrée. Les entrées ne sont jamais combinées, et une entrée ne peut pas hériter d’une autre. Une tâche qui omet environment_variables_key ne reçoit aucune variable d’environnement.

Les variables d’environnement ne sont disponibles que pour le code applicatif qui s’exécute dans le processus de tâche. Ils ne sont pas disponibles pour la logique d’exécution de Spark.

Exigences

  • Un administrateur d’espace de travail a activé les variables d’environnement dans Lakeflow Jobs depuis la page Preview . Consultez Gérer les préversions d’Azure Databricks.
  • Tâches qui fonctionnent sur un environnement serverless version 5 ou ultérieure.

Limitations

Les fonctions définies par l’utilisateur (UDF) ne peuvent pas lire les variables d’environnement, car les UDF s’exécutent dans la logique d’exécution Spark plutôt que dans le processus de tâche.

Les limites suivantes s’appliquent :

Configuration Limit
Entrées de variables d’environnement par métier 10
Clé d’entrée 1 à 100 caractères ; Doit correspondre ^[\w-_]+$
Variables en ligne par entrée 100
Nom de variable en ligne 1 à 256 caractères ; Doit correspondre ^[A-Za-z_][A-Za-z0-9_]*$
Valeur de la variable Inline 512 caractères

Configurez les variables d’environnement avec l’API Jobs

Utilisez le environment_variables champ dans une POST /api/2.2/jobs/create requête pour définir les entrées des variables d’environnement. Définissez environment_variables_key sur chaque tâche qui utilise une entrée.

L’exemple suivant définit des entrées distinctes de variables d’environnement pour une tâche notebook et une tâche JAR. Chaque tâche sélectionne son entrée avec environment_variables_key, et tout type de tâche serverless peut utiliser une entrée de la même manière :

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

Vous pouvez aussi configurer les entrées de variable d’environnement avec les opérations Mettre à jour une tâche, Écraser tous les paramètres d’une tâche et Soumettre une exécution unique.

Lire les variables d’environnement dans le code applicatif

Le code applicatif lit les variables configurées de l’environnement de processus.

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

Ressources additionnelles