Configuración de las opciones de canalización para Delta Live Tables

En este artículo, se proporcionan detalles sobre cómo configurar las opciones de canalización para Delta Live Tables. Delta Live Tables proporciona una interfaz de usuario para configurar y editar las opciones de canalización. La interfaz de usuario también proporciona una opción para mostrar y editar la configuración en JSON.

Nota:

Puede configurar la mayoría de las opciones de configuración con la interfaz de usuario o una especificación JSON. Algunas opciones avanzadas solo están disponibles mediante la configuración JSON.

Databricks recomienda familiarizarse con la configuración de Delta Live Tables mediante la interfaz de usuario. Si es necesario, puede editar directamente la configuración JSON en el área de trabajo. Los archivos de configuración JSON también son útiles al implementar canalizaciones en entornos nuevos o al usar la CLI o API de REST.

Para obtener una referencia completa a las opciones de configuración JSON de Delta Live Tables, consulte Configuraciones de canalización de Delta Live Tables.

Nota:

Dado que los recursos de proceso están totalmente administrados para canalizaciones sin servidor, la configuración de proceso, como el escalado automático mejorado, las directivas de clúster, los tipos de instancia y las etiquetas de clúster no están disponibles al seleccionar Sin servidor (versión preliminar pública) para una canalización.

Todavía puede pasar parámetros de configuración a una canalización sin servidor, pero se omite cualquier parámetro establecido en un objeto clusters de la configuración JSON.

Para más información sobre cómo habilitar canalizaciones de DLT sin servidor, póngase en contacto con el equipo de la cuenta de Azure Databricks.

Seleccionar una edición de producto

Seleccione la edición del producto de Delta Live Tables con las características más adecuadas para los requisitos de la canalización. Están disponibles las siguientes ediciones del producto:

  • Core para ejecutar cargas de trabajo de ingesta de streaming. Seleccione la edición Core si la canalización no requiere características avanzadas, como la captura de datos modificados (CDC) o las expectativas de Delta Live Tables.
  • Pro para ejecutar cargas de trabajo de ingesta de streaming y CDC. La edición Pro del producto admite todas las características de la edición Core, además de la compatibilidad con cargas de trabajo que requieren la actualización de tablas en función de los cambios en los datos de origen.
  • Advanced para ejecutar cargas de trabajo de ingesta de streaming, cargas de trabajo de CDC y cargas de trabajo que requieran expectativas. La edición Advanced del producto admite las características de las ediciones Core y Pro, y también admite el cumplimiento de las restricciones de calidad de datos con expectativas de Delta Live Tables.

Puede seleccionar la edición del producto al crear o editar una canalización. Puede seleccionar una edición diferente para cada canalización. Consulte la página del producto Delta Live Tables.

Nota:

Si la canalización incluye características no compatibles con la edición del producto seleccionada, por ejemplo, expectativas, recibirá un mensaje de error con el motivo del error. Después, puede editar la canalización para seleccionar la edición adecuada.

Elección de un modo de canalización

Puede actualizar la canalización continuamente o con desencadenadores manuales en función del modo de canalización. Consulte Ejecución de canalización continua frente a desencadenada.

Selección de una directiva de clúster

Los usuarios deben tener permisos para implementar el proceso para configurar y actualizar canalizaciones de Delta Live Tables. Los administradores del área de trabajo pueden configurar directivas de clúster para proporcionar a los usuarios acceso a recursos de proceso para Delta Live Tables. Consulte Definición de límites en el cálculo de canalizaciones de Tablas dinámicas Delta.

Nota:

  • Las directivas de clúster son opcionales. Consulte con el administrador del área de trabajo si carece de privilegios de proceso necesarios para Delta Live Tables.

  • Para asegurarse de que los valores predeterminados de la directiva de clúster se aplican correctamente, establezca el valor de apply_policy_default_values en true en las configuraciones de clúster en la configuración de canalización:

    {
      "clusters": [
        {
          "label": "default",
          "policy_id": "<policy-id>",
          "apply_policy_default_values": true
        }
      ]
    }
    

Configuración de bibliotecas de código fuente

Puede usar el selector de archivos en la interfaz de usuario de Delta Live Tables para configurar el código fuente que define la canalización. El código fuente de la canalización se define en cuadernos de Databricks o en scripts de SQL o Python almacenados en archivos del área de trabajo. Al crear o editar la canalización, puede agregar uno o varios cuadernos, o archivos de área de trabajo, o una combinación de cuadernos y archivos de área de trabajo.

Puede agregar cuadernos en cualquier orden, ya que Delta Live Tables analiza automáticamente las dependencias del conjunto de datos para construir el grafo de procesamiento de la canalización.

También puede modificar el archivo JSON para incluir el código fuente de Delta Live Tables definido en scripts SQL y Python almacenados en archivos del área de trabajo. En el ejemplo siguiente se incluyen cuadernos y archivos de área de trabajo:

{
  "name": "Example pipeline 3",
  "storage": "dbfs:/pipeline-examples/storage-location/example3",
  "libraries": [
    { "notebook": { "path": "/example-notebook_1" } },
    { "notebook": { "path": "/example-notebook_2" } },
    { "file": { "path": "/Workspace/Users/<user-name>@databricks.com/Apply_Changes_Into/apply_changes_into.sql" } },
    { "file": { "path": "/Workspace/Users/<user-name>@databricks.com/Apply_Changes_Into/apply_changes_into.py" } }
  ]
}

Especificar una ubicación de almacenamiento

Puede especificar una ubicación de almacenamiento para una canalización que se publica en el metastore de Hive. La motivación principal para especificar una ubicación es controlar la ubicación de almacenamiento de objetos para los datos escritos por la canalización.

Dado que todas las tablas, los datos, los puntos de control y los metadatos de las canalizaciones de Delta Live Tables están totalmente administrados por Delta Live Tables, la mayoría de las interacciones con los conjuntos de datos de Delta Live Tables se producen a través de tablas registradas en el metastore de Hive o en Unity Catalog.

Especificación de un esquema de destino para las tablas de salida de canalización

Aunque es opcional, debe especificar un destino para publicar tablas creadas por la canalización cada vez que vaya más allá del desarrollo y las pruebas de una nueva canalización. La publicación de una canalización en un destino hace que los conjuntos de datos estén disponibles para realizar consultas en otro lugar del entorno de Azure Databricks. Consulte Publicación de datos de canalizaciones de Delta Live Tables en el metastore de Hive o Uso de Unity Catalog con las canalizaciones de Delta Live Tables.

Configuración del proceso

Nota:

Dado que los recursos de proceso están totalmente administrados para canalizaciones sin servidor, la configuración de proceso no está disponible al seleccionar Sin servidor (versión preliminar pública) para una canalización.

Cada canalización de Delta Live Tables tiene dos clústeres asociados:

  • El clúster updates procesa las actualizaciones de canalización.
  • El clúster maintenance ejecuta tareas de mantenimiento diarias.

La configuración usada por estos clústeres viene determinada por el atributo clusters especificado en la configuración de la canalización.

Puede agregar la configuración del proceso que se aplica solo a un tipo específico de clúster mediante etiquetas de clúster. Hay tres etiquetas que puede usar al configurar clústeres de canalización:

Nota:

La configuración de etiqueta del clúster se puede omitir si va a definir solo una configuración de clúster. La etiqueta default se aplica a las configuraciones de clúster si no se proporciona ninguna configuración para la etiqueta. La configuración de la etiqueta del clúster solo es necesaria si necesita personalizar la configuración de diferentes tipos de clúster.

  • La etiqueta default define la configuración del proceso que se aplicará a los clústeres updates y maintenance. La aplicación de la misma configuración a ambos clústeres mejora la confiabilidad de las ejecuciones de mantenimiento al garantizar que las configuraciones necesarias, por ejemplo, las credenciales de acceso a datos para una ubicación de almacenamiento, se aplican al clúster de mantenimiento.
  • La etiqueta maintenance define la configuración del proceso que se aplicará solo al clúster maintenance. También puede usar la etiqueta maintenance para invalidar las opciones configuradas por la etiqueta default.
  • La etiqueta updates define la configuración que se aplicará solo al clúster updates. Use la etiqueta updates para configurar las opciones que no se deben aplicar al clúster maintenance.

La configuración definida mediante las etiquetas default y updates se combina para crear la configuración final del clúster updates. Si se define la misma configuración mediante las etiquetas default y updates, la configuración definida con la etiqueta updates invalida la configuración definida con la etiqueta default.

En el ejemplo siguiente, se define un parámetro de configuración de Spark que se agrega solo a la configuración del clúster updates:

{
  "clusters": [
    {
      "label": "default",
      "autoscale": {
        "min_workers": 1,
        "max_workers": 5,
        "mode": "ENHANCED"
      }
    },
    {
      "label": "updates",
      "spark_conf": {
         "key": "value"
      }
    }
  ]
}

Delta Live Tables proporciona opciones similares para la configuración del clúster como otro proceso en Azure Databricks. Al igual que otras opciones de canalización, puede modificar la configuración JSON de los clústeres para especificar opciones que no están presentes en la interfaz de usuario. Consulte Proceso.

Nota:

  • Dado que el entorno de ejecución de Delta Live Tables administra el ciclo de vida de los clústeres de canalización y ejecuta una versión personalizada de Databricks Runtime, no puede establecer manualmente algunas opciones de clúster en una configuración de canalización, como la versión de Spark o los nombres de clúster. Consulte Atributos de clúster que no son configurables por el usuario.
  • Puede configurar canalizaciones de Delta Live Tables para aprovechar Photon. Consulte ¿Qué es Photon?

Selección de tipos de instancia para ejecutar una canalización

De forma predeterminada, Delta Live Tables selecciona los tipos de instancia para los nodos de controlador y de trabajo que ejecutan la canalización, pero también puede configurar manualmente los tipos de instancia. Por ejemplo, puede que desee seleccionar tipos de instancia para mejorar el rendimiento de la canalización o solucionar problemas de memoria al ejecutar la canalización. Puede configurar tipos de instancia al crear o editar una canalización con la API de REST o en la interfaz de usuario de Delta Live Tables.

Para configurar tipos de instancia al crear o editar una canalización en la interfaz de usuario de Delta Live Tables:

  1. Haga clic en el botón Configuración.
  2. En la sección Avanzado de la configuración de la canalización, en los menús desplegables Tipo de trabajo y Tipo de controlador, seleccione los tipos de instancia para la canalización.

Para configurar los tipos de instancia en la configuración JSON de la canalización, haga clic en el botón JSON y escriba las configuraciones de los tipos de instancia en la configuración del clúster:

Nota:

Para evitar asignar recursos innecesarios al clúster maintenance, en este ejemplo, se usa la etiqueta updates para establecer los tipos de instancia solo para el clúster updates. Para asignar los tipos de instancia a los clústeres updates y maintenance, use la etiqueta default u omita la configuración de la etiqueta. La etiqueta default se aplica a las configuraciones del clúster de directiva si no se proporciona ninguna configuración para la etiqueta. Consulte Configuración del proceso.

{
  "clusters": [
    {
      "label": "updates",
      "node_type_id": "Standard_D12_v2",
      "driver_node_type_id": "Standard_D3_v2",
      "..." : "..."
    }
  ]
}

Use el escalado automático para aumentar la eficacia y reducir el uso de recursos

Use el escalado automático mejorado para optimizar el uso del clúster de las canalizaciones. El escalado automático mejorado agrega recursos adicionales solo si el sistema determina que esos recursos aumentarán la velocidad de procesamiento de la canalización. Los recursos se liberan cuando dejan de ser necesarios y los clústeres se apagan en cuanto se completan todas las actualizaciones de la canalización.

Para más información sobre el escalado automático mejorado, incluidos los detalles de configuración, consulte Optimizar el uso del clúster de las canalizaciones de Delta Live Tables con el escalado automático mejorado.

Retrasar el apagado del proceso

Dado que un clúster de Delta Live Tables se cierra automáticamente cuando no está en uso, al hacer referencia a una directiva de clúster que establece autotermination_minutes en la configuración del clúster se produce un error. Para controlar el comportamiento de apagado del clúster, puede usar el modo de desarrollo o producción o usar la configuración pipelines.clusterShutdown.delay en la configuración de la canalización. En el ejemplo siguiente, se establece el valor de pipelines.clusterShutdown.delay en 60 segundos:

{
    "configuration": {
      "pipelines.clusterShutdown.delay": "60s"
    }
}

Cuando se habilita el modo production, el valor predeterminado de pipelines.clusterShutdown.delay es 0 seconds. Cuando se habilita el modo development, el valor predeterminado es 2 hours.

Creación de un clúster de nodo único

Si establece num_workers en 0 en la configuración del clúster, este se crea como un clúster de nodo único. Configurar un clúster de escalado automático y establecer min_workers en 0 y max_workers en 0 también crea un clúster de nodo único.

Si configura un clúster de escalado automático y se establece solo min_workers en 0, el clúster no se crea como un clúster de nodo único. El clúster tiene al menos un trabajo activo en todo momento hasta que finaliza.

Una configuración de clúster de ejemplo para crear un clúster de nodo único en Delta Live Tables:

{
    "clusters": [
      {
        "num_workers": 0
      }
    ]
}

Configuración de etiquetas del clúster

Puede usar etiquetas de clúster para supervisar el uso de los clústeres de canalización. Agregue etiquetas de clúster en la interfaz de usuario de Delta Live Tables al crear o editar una canalización, o editando la configuración JSON de los clústeres de canalización.

Configuración de almacenamiento en la nube

Para acceder Azure Storage, debe configurar los parámetros necesarios, incluidos los tokens de acceso, mediante la configuración spark.conf en las configuraciones del clúster. Para un ejemplo de cómo configurar el acceso a una cuenta de almacenamiento de Azure Data Lake Storage Gen2 (ADLS Gen2), consulte Acceso seguro a las credenciales de almacenamiento con secretos en una canalización.

Parametrización de canalizaciones

El código de Python y SQL que define los conjuntos de datos se puede parametrizar mediante la configuración de la canalización. La parametrización permite los siguientes casos de uso:

  • Separar las rutas de acceso largas y otras variables del código.
  • Reducir la cantidad de datos procesados en los entornos de desarrollo o ensayo para acelerar las pruebas.
  • Volver a usar la misma lógica de transformación para procesar desde varios orígenes de datos.

En el ejemplo siguiente se usa el valor de configuración startDate para limitar la canalización de desarrollo a un subconjunto de los datos de entrada:

CREATE OR REFRESH LIVE TABLE customer_events
AS SELECT * FROM sourceTable WHERE date > '${mypipeline.startDate}';
@dlt.table
def customer_events():
  start_date = spark.conf.get("mypipeline.startDate")
  return read("sourceTable").where(col("date") > start_date)
{
  "name": "Data Ingest - DEV",
  "configuration": {
    "mypipeline.startDate": "2021-01-02"
  }
}
{
  "name": "Data Ingest - PROD",
  "configuration": {
    "mypipeline.startDate": "2010-01-02"
  }
}

Intervalo del desencadenador de canalizaciones

Puede usar pipelines.trigger.interval para controlar el intervalo del desencadenador de un flujo que actualiza una tabla o una canalización completa. Dado que una canalización desencadenada procesa cada tabla solo una vez, pipelines.trigger.interval solo se usa con canalizaciones continuas.

Databricks recomienda establecer pipelines.trigger.interval en tablas individuales debido a valores predeterminados diferentes para el streaming frente a las consultas por lotes. Establezca el valor en una canalización solo cuando el procesamiento requiera controlar las actualizaciones de todo el grafo de la canalización.

Se establece pipelines.trigger.interval en una tabla mediante spark_conf en Python o mediante SET en SQL:

@dlt.table(
  spark_conf={"pipelines.trigger.interval" : "10 seconds"}
)
def <function-name>():
    return (<query>)
SET pipelines.trigger.interval=10 seconds;

CREATE OR REFRESH LIVE TABLE TABLE_NAME
AS SELECT ...

Para establecer el elemento pipelines.trigger.interval en una canalización, agréguelo al objeto configuration en la configuración de la canalización:

{
  "configuration": {
    "pipelines.trigger.interval": "10 seconds"
  }
}

Permitir que los usuarios que no son administradores vean los registros de controladores desde una canalización habilitada para Unity Catalog

De forma predeterminada, solo el propietario de la canalización y los administradores del área de trabajo tienen permiso para ver los registros de controladores del clúster que ejecuta una canalización habilitada para Unity Catalog. Puede habilitar el acceso a los registros de controladores para cualquier usuario con permisos CAN MANAGE, CAN VIEW o CAN RUN agregando el siguiente parámetro de configuración de Spark al objeto configuration en la configuración de canalización:

{
  "configuration": {
    "spark.databricks.acl.needAdminPermissionToViewLogs": "false"
  }
}

Adición de notificaciones por correo electrónico para eventos de canalización

Puede configurar una o varias direcciones de correo electrónico para recibir notificaciones cuando se produzca lo siguiente:

  • Una actualización de canalización se completa correctamente.
  • Se produce un error en una actualización de canalización, ya sea un error con o sin reintentos. Seleccione esta opción para recibir una notificación de todos los errores de la canalización.
  • Se produce un error en una actualización de canalización con un error que no se puede volver a intentar (irrecuperable). Seleccione esta opción para recibir una notificación solo cuando se produzca un error sin reintentos.
  • Se produce un error en un único flujo de datos.

Para configurar las notificaciones por correo electrónico al crear o editar una canalización:

  1. Haga clic en Agregar notificación.
  2. Escriba una o varias direcciones de correo electrónico para recibir notificaciones.
  3. Haga clic en la casilla de cada tipo de notificación para enviar a las direcciones de correo electrónico configuradas.
  4. Haga clic en Agregar notificación.

Control de la administración de marcadores de exclusión para consultas de SCD tipo 1

La siguiente configuración se puede usar para controlar el comportamiento de la administración de marcadores de exclusión para eventos DELETE durante el procesamiento de SCD tipo 1:

  • pipelines.applyChanges.tombstoneGCThresholdInSeconds: establezca este valor para que coincida con el intervalo mayor esperado, en segundos, entre los datos desordenados. El valor predeterminado es 172 800 segundos (2 días).
  • pipelines.applyChanges.tombstoneGCFrequencyInSeconds: esta configuración controla la frecuencia con la que, en segundos, se comprueban los marcadores de exclusión para la limpieza. El valor predeterminado es 1800 segundos (30 minutos).

Consulte Captura simplificada de datos modificados con APPLY CHANGES API en Delta Live Tables.

Configuración de permisos de canalización

Debe tener el permiso CAN MANAGE o IS OWNER en la canalización para administrar los permisos en ella.

  1. En la barra lateral, haga clic en Delta Live Tables.

  2. Seleccione el nombre de una canalización.

  3. Haga clic en el menú kebab puntos suspensivos verticales y seleccione Permisos.

  4. En Configuración de permisos, seleccione el menú desplegable Seleccionar usuario, grupo o entidad de servicio... y después seleccione un usuario, grupo o entidad de servicio.

    Diálogo Configuración de permisos

  5. Seleccione un permiso en el menú desplegable de permisos.

  6. Haga clic en Agregar.

  7. Haga clic en Save(Guardar).

Habilitar almacén de estado de RocksDB para Delta Live Tables

Puede habilitar la administración de estado basada en RocksDB estableciendo la siguiente configuración antes de implementar una canalización:

{
  "configuration": {
     "spark.sql.streaming.stateStore.providerClass": "com.databricks.sql.streaming.state.RocksDBStateStoreProvider"
  }
}

Para más información sobre el almacén de estado de RocksDB, incluidas las recomendaciones de configuración de RocksDB, consulte Configuración del almacén de estados de RocksDB en Azure Databricks.