Plantillas de proyecto de agrupación de recursos de Databricks
En este artículo se describe la sintaxis de las plantillas de Agrupaciones de recursos de Databricks. Las agrupaciones permiten la administración mediante programación de flujos de trabajo de Azure Databricks. Consulte ¿Qué son las agrupaciones de recursos de Databricks?
Las plantillas de agrupación permiten a los usuarios crear agrupaciones de forma coherente y repetible mediante el establecimiento de estructuras de carpetas, pasos de compilación y tareas, pruebas y otros atributos de infraestructura como código (IaC) de DevOps comunes en una canalización de implementación del entorno de desarrollo.
Por ejemplo, si ejecuta de forma rutinaria trabajos de Databricks que requieren paquetes personalizados con un paso de compilación lento tras la instalación, puede acelerar el bucle de desarrollo mediante la creación de una plantilla de agrupación que admita entornos de contenedor personalizados.
Las plantillas de agrupación definen la estructura de directorios del lote que se creará y incluyen una databricks.yml.tmpl
plantilla de archivo de configuración, así como un databricks_template_schema.json
archivo que contiene variables de solicitud de usuario.
Utilizar una plantilla de agrupación predeterminada
Para usar una plantilla de agrupación predeterminada de Azure Databricks para crear la agrupación, utilice el comando bundle init
de la CLI de Databricks y especifica el nombre de la plantilla predeterminada que se va a usar. Por ejemplo, el siguiente comando crea una agrupación mediante la plantilla de agrupación de Python predeterminada:
databricks bundle init default-python
Si no especifica una plantilla predeterminada, el bundle init
comando presenta el conjunto de plantillas disponibles desde las que puede elegir.
Azure Databricks proporciona las siguientes plantillas de agrupación predeterminadas:
Plantilla | Descripción |
---|---|
default-python |
Plantilla para usar Python con Databricks. Esta plantilla crea una agrupación con un trabajo y una canalización de Delta Live Tables. Consulte default-python. |
default-sql |
Plantilla para usar SQL con Databricks. Esta plantilla contiene un archivo de configuración que define un trabajo que ejecuta consultas SQL en un almacén de SQL. Consulte default-sql. |
dbt-sql |
Plantilla que aprovecha dbt-core para el desarrollo local y los conjuntos para la implementación. Esta plantilla contiene la configuración que define un trabajo con una tarea dbt, así como un archivo de configuración que define perfiles de dbt para trabajos dbt implementados. Consulte dbt-sql. |
mlops-stacks |
Plantilla de pila completa avanzada para iniciar nuevos proyectos de MLOps Stacks. Consulte mlops-stacks y Paquetes de recursos de MlOps para pilas de MLOps. |
Uso de una plantilla de agrupación personalizada
Para usar una plantilla de agrupación que no sea la predeterminadas de Azure Databricks, pase la ruta de acceso local o la dirección URL remota de la plantilla al comando bundle init
de la CLI de Databricks.
Por ejemplo, el siguiente comando usa la plantilla dab-container-template
creada en el Tutorial de plantilla de agrupación personalizada:
databricks bundle init /projects/my-custom-bundle-templates/dab-container-template
Creación de una plantilla de agrupación personalizada
Las plantillas de agrupación usan la sintaxis de plantillas de paquetes de Go. Consulte la documentación de la plantilla de paquete de Go.
Como mínimo, un proyecto de plantilla de agrupación debe tener:
- Un archivo
databricks_template_schema.json
en la raíz del proyecto que define una variable de solicitud de usuario para el nombre del proyecto de agrupación. - Un archivo
databricks.yml.tmpl
ubicado en una carpetatemplate
que define la configuración de los conjuntos creados con la plantilla. Si eldatabricks.yml.tmpl
archivo hace referencia a plantillas de configuración adicionales*.yml.tmpl
, especifique la ubicación de estos en lainclude
asignación.
Opcionalmente, puede agregar subcarpetas y archivos a la template
carpeta que desea reflejar en agrupaciones creadas por la plantilla.
Definición de variables de solicitud de usuario
El primer paso para crear una plantilla de agrupación básica es crear una carpeta de proyecto de plantilla y un archivo denominado databricks_template_schema.json
en la raíz del proyecto. Este archivo contiene las variables para las que los usuarios proporcionan valores de entrada cuando usan la plantilla para crear una agrupación mediante bundle init
. Este archivo sigue la especificación del esquema JSON.
mkdir basic-bundle-template
touch basic-bundle-template/databricks_template_schema.json
Agregue el siguiente código al archivo databricks_template_schema.json
y, a continuación, guarde el archivo:
{
"properties": {
"project_name": {
"type": "string",
"default": "basic_bundle",
"description": "What is the name of the bundle you want to create?",
"order": 1
}
},
"success_message": "\nYour bundle '{{.project_name}}' has been created."
}
En este archivo:
project_name
es el único nombre de variable de entrada.default
es un valor predeterminado opcional para la variable relacionada, si el usuario no proporciona un valor con--config-file
como parte del comandobundle init
o invalida al usuario en el símbolo del sistema.description
es la solicitud del usuario para la variable de entrada relacionada, si el usuario no proporciona un valor con--config-file
como parte del comandobundle init
.order
es un orden opcional en el que aparece cada solicitud de usuario, si el usuario no proporciona un valor con--config-file
como parte del comandobundle init
. Si no se proporcionaorder
, se mostrarán las indicaciones del usuario en el orden en que se muestran, de principio a fin.success_message
es un mensaje opcional que se muestra tras la creación correcta del proyecto.
Compilación de la estructura de carpetas
A continuación, cree la carpeta necesaria template
y compile la estructura de carpetas dentro de ella. Esta estructura se reflejará mediante agrupaciones creadas con esta plantilla. Además, coloque los archivos que desee incluir en esas carpetas. Esta plantilla de agrupación básica almacena archivos en una src
carpeta e incluye un cuaderno simple.
mkdir -p basic-bundle-template/template/src
touch basic-bundle-template/template/src/simple_notebook.ipynb
Agregue al archivo simple_notebook.ipynb
lo siguiente:
print("Hello World!")
Rellenar archivos de plantilla de configuración
Ahora cree el archivo necesario databricks.yml.tmpl
en la carpetatemplate
:
touch basic-bundle-template/template/databricks.yml.tmpl
Rellene este archivo con la plantilla de configuración básica YAML. Esta plantilla de configuración establece el nombre del lote, un trabajo mediante el archivo de cuaderno especificado y dos entornos de destino para agrupaciones creadas con esta plantilla. También aprovecha las sustituciones de agrupación, que es muy recomendable. Consulte las sustituciones de agrupación.
# This is the configuration for the Databricks Asset Bundle {{.project_name}}.
bundle:
name: {{.project_name}}
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
targets:
# The deployment targets. See https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html
dev:
mode: development
default: true
workspace:
host: {{workspace_host}}
prod:
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
user_name: {{user_name}}
{{end -}}
Prueba de la plantilla de agrupación
Por último, pruebe la plantilla. Cree una nueva carpeta de proyecto de agrupación y, a continuación, use la CLI de Databricks para inicializar una nueva agrupación mediante la plantilla:
mkdir my-test-bundle
cd my-test-bundle
databricks bundle init ../basic-bundle-template
En el símbolo del sistema What is your bundle project name?
, escriba my_test_bundle
.
Una vez creada la agrupación de pruebas, se genera el mensaje de confirmación del archivo de esquema. Si examina el contenido de la carpeta my-test-bundle
, debería ver lo siguiente:
my-test-bundle
├── databricks.yml
└── src
└── simple_notebook.ipynb
Y el archivo databricks.yml ahora está personalizado:
# This is the configuration for the Databricks Asset Bundle my-test-bundle.
bundle:
name: my-test-bundle
# The main job for my-test-bundle
resources:
jobs:
my-test-bundle_job:
name: my-test-bundle_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
targets:
# The 'dev' target, used for development purposes. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#development-mode)
dev:
mode: development
default: true
workspace:
host: https://my-host.cloud.databricks.com
# The 'prod' target, used for production deployment. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#production-mode)
prod:
mode: production
workspace:
host: https://my-host.cloud.databricks.com
root_path: /Shared/.bundle/prod/${bundle.name}
run_as:
# This runs as someone@example.com in production. Alternatively,
# a service principal could be used here using service_principal_name
user_name: someone@example.com
Uso compartido de la plantilla
Si desea compartir esta plantilla de agrupación con otros usuarios, puede almacenarla en el control de versiones con cualquier proveedor que Git admita y al que los usuarios tengan acceso. Para ejecutar el comando bundle init
con una dirección URL de Git, asegúrese de que el archivo databricks_template_schema.json
se encuentra en la ubicación raíz con respecto a esa dirección URL de Git.
Sugerencia
Puede colocar el archivo databricks_template_schema.json
en una carpeta diferente, en relación con la raíz del lote. A continuación, puede usar la opción bundle init
del comando --template-dir
para hacer referencia a esa carpeta, que contiene el archivo databricks_template_schema.json
.
Pasos siguientes
- Examine plantillas adicionales creadas y mantenidas por Databricks. Consulte el repositorio de ejemplos de agrupación en GitHub.
- Para usar MLOps Stacks con plantillas de agrupación de recursos de Databricks, consulte Agrupaciones de recursos de Databricks para pilas MLOps.
- Obtenga más información sobre la plantillas de paquetes de Go. Consulte la documentación de la plantilla de paquete de Go.