Pular para o conteúdo principal

Configure variáveis de ambiente para jobs serverless

As variáveis de ambiente fornecem configuração específica de implantação para o código do aplicativo em tarefas serverless do Lakeflow Jobs. Defina entradas de variáveis de ambiente nomeadas em um job e, em seguida, selecione uma entrada para cada tarefa que precise dela. Durante a versão Beta, você configura variáveis de ambiente por meio da API de Jobs.

info

Beta

Esse recurso está em Beta. Para usá-lo, um administrador do workspace deve ativar variáveis de ambiente em Lakeflow Jobs na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.

Esta página descreve variáveis de ambiente para jobs Serverless. O compute Serverless não suporta init scripts. Se sua carga de trabalho for executada em compute clássico, consulte Definir e usar variáveis de ambiente com init scripts.

Como as variáveis de ambiente funcionam

As entradas de variável de ambiente são definidas no nível do job. Cada entrada possui uma unique key, contém variáveis inline e funciona com todos os tipos de tarefa serverless. Uma chave de entrada pode conter apenas letras, números, hifens e underscores. Cada nome de variável inline deve começar com uma letra ou underscore e pode conter apenas letras, números e underscores.

Cada tarefa seleciona uma única entrada de variável de ambiente com environment_variables_key e recebe apenas as variáveis dessa entrada. As entradas nunca são combinadas, e uma entrada não pode herdar de outra. Uma tarefa que omite environment_variables_key não recebe nenhuma variável de ambiente.

As variáveis de ambiente estão disponíveis apenas para o código do aplicativo que é executado no processo da tarefa. Elas não estão disponíveis para a lógica de execução do Spark.

Requisitos

  • Um administrador do workspace ativou Variáveis de ambiente no Lakeflow Jobs na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.
  • Tarefas que são executadas em ambiente serverless versão 5 ou posterior.

Limitações

Funções definidas pelo usuário (UDFs) não podem ler variáveis de ambiente, pois as UDFs são executadas na lógica de execução do Spark em vez de no processo da tarefa.

Aplicam-se os seguintes limites:

Configuração

Limite

Entradas de variáveis de ambiente por job

10

Chave de entrada

1–100 caracteres; deve corresponder ^[\w\-_]+$

Variáveis embutidas por entrada

100

Nome da variável em linha

1–256 caracteres; deve corresponder ^[A-Za-z_][A-Za-z0-9_]*$

Valor da variável embutida

512 caracteres

Configuração

Limite

Entradas de variáveis de ambiente por job

10

Chave de entrada

1–100 caracteres; deve corresponder ^[\w\-_]+$

Variáveis embutidas por entrada

100

Nome da variável em linha

1–256 caracteres; deve corresponder ^[A-Za-z_][A-Za-z0-9_]*$

Valor da variável embutida

512 caracteres

Configure variáveis de ambiente com a API de Tarefas.

Use o campo environment_variables em uma solicitação POST /api/2.2/jobs/create para definir entradas de variável de ambiente. Defina environment_variables_key em cada tarefa que usa uma entrada.

O exemplo a seguir define entradas de variáveis de ambiente separadas para uma tarefa de notebook e uma tarefa de JAR. Cada tarefa seleciona sua entrada com environment_variables_key, e qualquer tipo de tarefa Serverless pode usar uma entrada da mesma forma:

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

Você também pode configurar entradas de variável de ambiente com as operações Atualizar um job, Substituir todas as configurações de um job e Enviar uma execução única.

Ler variáveis de ambiente no código do aplicativo

O código da aplicação lê as variáveis configuradas do ambiente do processo.

Python
import os

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

Outros recursos