Cursos
Módulo
Automatización de cargas de trabajo con trabajos de Azure Databricks - Training
Automatización de cargas de trabajo con trabajos de Azure Databricks
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Los proyectos de dbt Core se pueden ejecutar como una tarea en un trabajo de Azure Databricks. Si ejecuta un proyecto de dbt Core como una tarea de trabajo, podrá beneficiarse de las siguientes características de los trabajos de Azure Databricks:
Para obtener más información sobre dbt Core, consulte la documentación de dbt.
Una buena práctica con Databricks consiste en desarrollar los proyectos de dbt con un almacenamiento SQL de Databricks. Si usa un almacenamiento SQL de Databricks, podrá probar el código SQL que se genera con dbt, así como usar el historial de consultas del almacenamiento SQL para depurar las consultas que se generan con dbt.
Para ejecutar las transformaciones de dbt que estén en fase de producción, una buena práctica consiste en usar la tarea dbt en un trabajo de Databricks. De manera predeterminada, la tarea dbt ejecutará el proceso de Python de dbt mediante un proceso de Azure Databricks y el SQL que se genere con dbt se ejecutará en el almacenamiento SQL que se seleccione.
Puede ejecutar transformaciones de dbt en un almacenamiento de SQL sin servidor, un almacenamiento de SQL Pro, un proceso de Azure Databricks o cualquier otro almacenamiento compatible con dbt. En este artículo se describen las dos primeras opciones con ejemplos.
Si el área de trabajo está habilitada para Unity Catalog y Trabajos sin servidor está habilitado, de manera predeterminada, el trabajo se ejecuta en proceso sin servidor.
Nota
Si los modelos dbt se desarrollan con un almacenamiento SQL y se ejecutan en un proceso de Azure Databricks durante la fase de producción, puede que se experimenten diferencias sutiles tanto en el rendimiento como en la compatibilidad del lenguaje SQL. Databricks recomienda usar la misma versión de Databricks Runtime para el proceso y el almacenamiento SQL.
Para obtener información sobre cómo usar dbt Core y el paquete dbt-databricks
para crear y ejecutar proyectos de dbt en el entorno de desarrollo que use, consulte Conexión a dbt Core.
Use el paquete de Databricks dbt-databricks en lugar del paquete dbt-spark. El paquete dbt-databricks es una bifurcación de dbt-spark que está optimizada para su uso en Databricks.
Para usar proyectos de dbt en un trabajo de Azure Databricks, deberá configurar la integración de Git para las carpetas Git de Databricks. Los proyectos de dbt no se pueden ejecutar desde DBFS.
Debe tener habilitados los almacenes de SQL profesionales o sin servidor.
Debe tener el derecho de SQL de Databricks.
En el siguiente ejemplo se usa el proyecto jaffle_shop; un proyecto de ejemplo que sirve para mostrar los conceptos básicos de dbt. Para crear un trabajo donde se ejecute el proyecto "jaffle shop", complete los pasos siguientes.
Vaya a la página de aterrizaje de Azure Databricks y realice una de las siguientes acciones:
En el cuadro de texto de la tarea en la pestaña Tareas, reemplace Agregar un nombre para el trabajo... por el nombre del trabajo que quiera usar.
En el campo Nombre de tarea, escriba el nombre que quiera darle a la tarea.
En el campo Tipo, seleccione el tipo de tarea dbt.
En el menú desplegable Origen, puede seleccionar Área de trabajo a fin de usar un proyecto dbt ubicado en una carpeta del área de trabajo de Azure Databricks o Proveedor de Git para un cuaderno ubicado en un repositorio de Git remoto. Dado que en este ejemplo se usa el proyecto de la tienda jaffle ubicado en un repositorio de Git, seleccione Proveedor de Git, haga clic en Editar y escriba los detalles del repositorio de GitHub de la tienda jaffle.
main
. También puede usar una etiqueta o SHA.Haga clic en Confirmar.
En los cuadros de texto comandos dbt, especifique los comandos dbt que se van a ejecutar (deps, seed y run). Debe agregar el prefijo dbt
a todos los comandos. Los comandos se ejecutarán en el orden que se especifique.
En SQL warehouse, seleccione un almacenamiento de SQL para ejecutar el código SQL generado por dbt. En el menú desplegable SQL warehouse solo se muestran los almacenamientos de SQL sin servidor y Pro.
(Opcional) Es posible especificar un esquema para la salida de la tarea. De manera predeterminada, se usa el esquema default
.
(Opcional) Si desea cambiar la configuración de proceso que ejecuta dbt Core, haga clic en Proceso de la CLI de dbt.
(Opcional) Es posible especificar una versión del paquete dbt-databricks para la tarea. Por ejemplo, para anclar la tarea dbt a una versión específica para las fases de desarrollo y producción, siga estos pasos:
dbt-databricks==1.6.0
).Nota
Una buena práctica en Databricks consiste en anclar las tareas de dbt a una versión específica del paquete dbt-databricks para asegurarse de que se va a usar la misma versión para las ejecuciones de las fases de desarrollo y producción. Use la versión 1.6.0 del paquete de Databricks dbt-databricks o una posterior.
Haga clic en Crear.
Para ejecutar el trabajo en este momento, haga clic en el .
Para probar los resultados de ejecución del trabajo una vez que esta se complete, puede ejecutar consultas SQL desde un cuaderno o ejecutar consultas en el almacenamiento de Databricks. Por ejemplo, vea las siguientes consultas de ejemplo:
SHOW tables IN <schema>;
SELECT * from <schema>.customers LIMIT 10;
Reemplace el elemento <schema>
por el nombre de esquema que haya configurado durante el proceso de configuración de la tarea.
También puede usar la API Jobs para crear y administrar trabajos donde se incluyan tareas dbt. En el siguiente ejemplo se crea un trabajo con una sola tarea dbt:
{
"name": "jaffle_shop dbt job",
"max_concurrent_runs": 1,
"git_source": {
"git_url": "https://github.com/dbt-labs/jaffle_shop",
"git_provider": "gitHub",
"git_branch": "main"
},
"job_clusters": [
{
"job_cluster_key": "dbt_CLI",
"new_cluster": {
"spark_version": "10.4.x-photon-scala2.12",
"node_type_id": "Standard_DS3_v2",
"num_workers": 0,
"spark_conf": {
"spark.master": "local[*, 4]",
"spark.databricks.cluster.profile": "singleNode"
},
"custom_tags": {
"ResourceClass": "SingleNode"
}
}
}
],
"tasks": [
{
"task_key": "transform",
"job_cluster_key": "dbt_CLI",
"dbt_task": {
"commands": [
"dbt deps",
"dbt seed",
"dbt run"
],
"warehouse_id": "1a234b567c8de912"
},
"libraries": [
{
"pypi": {
"package": "dbt-databricks>=1.0.0,<2.0.0"
}
}
]
}
]
}
Para ejecutar la tarea de dbt con un almacén de SQL (recomendado) o un proceso de uso completo, use una profiles.yml
personalizada que defina el almacenamiento o el proceso de Azure Databricks al que conectarse. Para crear un trabajo que ejecute el proyecto jaffle shop con un almacenamiento o un clúster de propósito general, siga estos pasos.
Nota
Solo se puede usar un almacenamiento de SQL o un proceso de propósito general como destino para una tarea de dbt. No se puede usar el proceso de trabajo como destino para dbt.
Cree una bifurcación del repositorio jaffle_shop.
Clone el repositorio que ha bifurcado al escritorio. Por ejemplo, podría ejecutar un comando como el siguiente:
git clone https://github.com/<username>/jaffle_shop.git
Reemplace el elemento <username>
por su alias de GitHub.
Cree un archivo que se llame profiles.yml
en el directorio jaffle_shop
con el siguiente contenido:
jaffle_shop:
target: databricks_job
outputs:
databricks_job:
type: databricks
method: http
schema: "<schema>"
host: "<http-host>"
http_path: "<http-path>"
token: "{{ env_var('DBT_ACCESS_TOKEN') }}"
<schema>
por el nombre de esquema que vaya a usar para las tablas del proyecto.<http-host>
por el valor de Nombre de host del servidor de la pestaña Detalles de conexión del almacenamiento de SQL. Para ejecutar la tarea de dbt con un proceso de propósito general, reemplace <http-host>
por el valor de Nombre de host del servidor de la pestaña Opciones avanzadas, JDBC/ODBC del proceso de Azure Databricks.<http-path>
por el valor de Ruta de acceso HTTP de la pestaña Detalles de conexión del almacenamiento de SQL. Para ejecutar la tarea de dbt con un proceso de propósito general, reemplace <http-path>
por el valor de Ruta de acceso HTTP de la pestaña Opciones avanzadas, JDBC/ODBC del proceso de Azure Databricks.En este archivo no deben especificarse secretos como los token de acceso, ya que este se introducirá en el control de código fuente. En su lugar, en este archivo, las credenciales se insertan dinámicamente en tiempo de ejecución mediante la funcionalidad de plantillas de dbt.
Nota
Las credenciales generadas son válidas durante la ejecución, hasta un máximo de 30 días, y se revocan automáticamente después de la finalización.
Introduzca este archivo en Git e insértelo en el repositorio bifurcado que creó. Por ejemplo, podría ejecutar comandos como los siguientes:
git add profiles.yml
git commit -m "adding profiles.yml for my Databricks job"
git push
Haga clic en Flujos de trabajo en la barra lateral de la interfaz de usuario de Databricks.
Seleccione el trabajo de dbt y haga clic en la pestaña Tareas.
En Origen, haga clic en el elemento Editar e introduzca los detalles del repositorio de GitHub bifurcado "jaffle shop".
En SQL warehouse, seleccione None (Manual).
En el campo Directorio de perfiles, introduzca la ruta de acceso relativa del directorio donde se ubica el archivo profiles.yml
. Deje el valor de la ruta de acceso en blanco si quiere que se use el valor predeterminado de la raíz del repositorio.
Nota
La compatibilidad de dbt con los modelos de Python está en versión beta y requiere dbt 1.3 o versiones superiores.
dbt ahora admite modelos de Python en almacenamientos de datos específicos, incluidos Databricks. Con los modelos de Python de dbt, puede usar herramientas del ecosistema de Python para implementar transformaciones que son difíciles de implementar con SQL. Puede crear un trabajo de Azure Databricks para ejecutar una sola tarea con el modelo de Python de dbt, o bien puede incluir la tarea dbt como parte de un flujo de trabajo que incluya varias tareas.
No se pueden ejecutar modelos de Python en una tarea de dbt con un almacenamiento de SQL. Para obtener más información sobre el uso de modelos de Python de dbt con Azure Databricks, consulte Almacenamientos de datos específicos en la documentación de dbt.
Mensaje de error:
dbt looked for a profiles.yml file in /tmp/.../profiles.yml but did not find one.
Causas posibles:
No se encontró el archivo profiles.yml
en la ruta $PATH que se especificó. Asegúrese de que el archivo profiles.yml se incluya en la raíz del proyecto de dbt.
Cursos
Módulo
Automatización de cargas de trabajo con trabajos de Azure Databricks - Training
Automatización de cargas de trabajo con trabajos de Azure Databricks
Documentación
Conexión a dbt Core: Azure Databricks
Aprenda qué es dbt y a conectar el área de trabajo de Azure Databricks a dbt Core, una herramienta de línea de comandos de código abierto que permite a los equipos de datos transformar datos.
Conexión a dbt Cloud: Azure Databricks
Aprenda a conectar el área de trabajo de Azure Databricks a dbt Cloud, un servicio hospedado que ayuda a los analistas de datos e ingenieros a producir implementaciones de dbt.
Aprenda a configurar el inicio de sesión de Azure Databricks desde dbt Core con Microsoft Entra ID.