Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste tutorial, você criará um modelo personalizado do Databricks Asset Bundle para criar pacotes que executam um trabalho com uma tarefa Python específica em um cluster usando uma imagem de contêiner específica do Docker.
Para obter informações sobre modelos de pacote personalizados, consulte Modelos de pacote personalizados.
Requerimentos
- Instale a versão 0.218.0 ou superior da CLI do Databricks. Se já o tiver instalado, confirme se a versão é 0.218.0 ou superior executando
databricks -versiona partir da linha de comandos.
Definir variáveis de prompt do usuário
A primeira etapa na construção de um modelo de pacote é especificar as variáveis de prompt do utilizador databricks bundle init. Na linha de comando:
Crie um diretório vazio chamado
dab-container-template:mkdir dab-container-templateNa raiz do diretório, crie um arquivo chamado
databricks_template_schema.json:cd dab-container-template touch databricks_template_schema.jsonAdicione o seguinte conteúdo ao
databricks_template_schema.jsone salve o arquivo. Cada variável será convertida para um prompt do usuário durante a criação do pacote.{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
Criar a estrutura de pastas do pacote
Em seguida, no diretório de modelos, crie subdiretórios chamados resources e src. A pasta template contém a estrutura de diretórios para os pacotes gerados. Os nomes dos subdiretórios e arquivos seguirão a sintaxe do modelo de pacote Go quando derivados de valores de usuário.
mkdir -p "template/resources"
mkdir -p "template/src"
Adicionar modelos de configuração YAML
No diretório template, crie um arquivo chamado databricks.yml.tmpl e adicione o seguinte YAML. Este exemplo usa os auxiliares de modelo de pacote .
touch template/databricks.yml.tmpl
# This is a Databricks asset bundle definition for {{.project_name}}.
# See https://docs.databricks.com/dev-tools/bundles/index.html for documentation.
bundle:
name: {{.project_name}}
include:
- resources/*.yml
targets:
# The 'dev' target, used for development purposes.
# Whenever a developer deploys using 'dev', they get their own copy.
dev:
# We use 'mode: development' to make sure everything deployed to this target gets a prefix
# like '[dev my_user_name]'. Setting this mode also disables any schedules and
# automatic triggers for jobs and enables the 'development' mode for :re[LDP].
mode: development
default: true
workspace:
host: {{workspace_host}}
# The 'prod' target, used for production deployment.
prod:
# For production deployments, we only have a single copy, so we override the
# workspace.root_path default of
# /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.target}/${bundle.name}
# to a path that is not specific to the current user.
#
# By making use of 'mode: production' we enable strict checks
# to make sure we have correctly configured this target.
mode: production
workspace:
host: {{workspace_host}}
root_path: /Shared/.bundle/prod/${bundle.name}
{{- if not is_service_principal}}
run_as:
# This runs as {{user_name}} in production. Alternatively,
# a service principal could be used here using service_principal_name
# (see Databricks documentation).
user_name: {{user_name}}
{{end -}}
Crie outro arquivo YAML chamado {{.project_name}}_job.yml.tmpl e coloque-o no diretório template/resources. Esse novo arquivo YAML divide as definições de trabalho do projeto do restante da definição do pacote. Adicione o seguinte YAML a este arquivo para descrever o trabalho de modelo, que contém uma tarefa Python específica para ser executada em um cluster de trabalho usando uma imagem de contêiner do Docker específica:
touch template/resources/{{.project_name}}_job.yml.tmpl
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: python_task
job_cluster_key: job_cluster
spark_python_task:
python_file: ../src/{{.project_name}}/task.py
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
docker_image:
url: databricksruntime/python:10.4-LTS
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
Neste exemplo, você usa uma imagem de contêiner padrão do Docker base do Databricks, mas pode especificar sua própria imagem personalizada.
Adicionar arquivos referenciados em sua configuração
Em seguida, crie um diretório template/src/{{.project_name}} e crie o arquivo de tarefa Python referenciado pelo trabalho no modelo:
mkdir -p template/src/{{.project_name}}
touch template/src/{{.project_name}}/task.py
Agora, adicione o seguinte a task.py:
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()
print(f'Spark version{spark.version}')
Verificar a estrutura do modelo de pacote
Analise a estrutura de pastas do seu projeto de modelo de pacote. Deve ter a seguinte aparência:
.
├── databricks_template_schema.json
└── template
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── {{.project_name}}
└── task.py
Teste o seu modelo
Por fim, teste o seu modelo de agrupamento. Para gerar um pacote com base em seu novo modelo personalizado, use o comando databricks bundle init, especificando o novo local do modelo. A partir da pasta raiz do conjunto de projetos:
mkdir my-new-container-bundle
cd my-new-container-bundle
databricks bundle init dab-container-template
Próximos passos
- Crie um pacote que implante um bloco de anotações em um espaço de trabalho do Azure Databricks e, em seguida, execute esse bloco de anotações implantado como um trabalho do Azure Databricks. Consulte Desenvolver um trabalho com Databricks Asset Bundles.
- Crie um pacote que implante um notebook em um espaço de trabalho do Azure Databricks e, em seguida, execute esse notebook implantado como um pipeline de ETL. Consulte Desenvolver pipelines declarativos do Lakeflow Spark com pacotes de ativos Databricks.
- Crie um pacote que instale e execute uma stack de MLOps. Consulte Databricks Asset Bundles para MLOps Stacks.
- Adicione um pacote a um fluxo de trabalho de CI/CD (integração contínua/implantação contínua) no GitHub. Consulte Ações do GitHub.