Destino de Databricks (Zerobus)

Este producto no es compatible con el sitio Datadog seleccionado. ().
Disponible para:

Registros

¡Únase a la versión preliminar!

El destino de Databricks (Zerobus) está en versión preliminar. Contacte a su gerente de cuenta para solicitar acceso.

Resumen

Utiliza el destino de Databricks (Zerobus) de Observability Pipelines para enviar registros a una tabla de Unity Catalog de Databricks. El destino transmite registros a la API de Ingesta de Zerobus y se autentica en Databricks con un principal de servicio OAuth.

Requisitos previos

Antes de configurar el destino de Databricks (Zerobus), debe:

Configurar un esquema y una tabla

Los ejemplos de SQL en esta sección utilizan los siguientes marcadores de posición:

Marcador de posiciónDescripciónEjemplo
<USER>El usuario que crea el esquema y la tabla.databricks-user@example.com
<CATALOG_NAME>El nombre de Unity Catalog.main
<SCHEMA_NAME>El nombre del esquema.obs_pipelines
<TABLE_NAME>El nombre de la tabla.apache_common_logs
<YOUR_MANAGED_LOCATION>(Opcional) La URI de ubicación administrada.s3://your-bucket/managed

Nota: Los comandos GRANT deben ser ejecutados por un administrador del espacio de trabajo de Databricks.

En el espacio de trabajo de Databricks:

  1. Si no es un administrador del espacio de trabajo de Databricks, pida a un administrador que ejecute el siguiente comando para otorgarle a su usuario permiso para crear un esquema:

    GRANT CREATE SCHEMA ON CATALOG <CATALOG_NAME> TO <USER>;
    
  2. Cree el esquema:

    CREATE SCHEMA IF NOT EXISTS <CATALOG_NAME>.<SCHEMA_NAME>
    MANAGED LOCATION '<YOUR_MANAGED_LOCATION>';
    
    • Note: MANAGED LOCATION is optional. See Databricks’ Create Schemas documentation for more information.
  3. Si no es un usuario administrador, pida a un administrador que ejecute el siguiente comando para otorgarle a su usuario permiso para crear una tabla en el esquema:

    GRANT CREATE TABLE ON SCHEMA <CATALOG_NAME>.<SCHEMA_NAME> TO <USER>;
    
  4. Ejecute el siguiente comando para crear la tabla a la que Observability Pipelines escribe datos de registro:

    CREATE TABLE <CATALOG_NAME>.<SCHEMA_NAME>.<TABLE_NAME> (
      host STRING,
      message STRING,
      service STRING,
      source_type STRING,
      timestamp TIMESTAMP
    );
    

El nombre de la tabla completamente calificado es catalog.schema.table, por ejemplo main.obs_pipelines.apache_common_logs. Este es el valor que ingresa para Nombre de la Tabla cuando configura el destino de Observability Pipelines de Databricks.

Configure un principal de servicio

La API de Ingesta de Zerobus de Databricks utiliza autenticación OAuth. Cuando crea el principal de servicio, se genera el secreto del cliente OAuth y el ID del cliente OAuth es el UUID del principal de servicio.

Para crear un principal de servicio:

  1. En su espacio de trabajo de Databricks, navegue a Configuración de usuario > Identidad y acceso > Principal de servicio.
  2. Haga clic en Agregar principal de servicio.
  3. Después de que se crea el principal de servicio, genere un secreto OAuth para él.
    • Toma nota del ID de aplicación (ID de cliente) del principal de servicio y del secreto del cliente OAuth. Necesita ambos cuando configura el destino de Observability Pipelines de Databricks.
  4. Ejecute este SQL en Databricks para otorgar al principal de servicio acceso al catálogo, esquema y tabla. Reemplace <SERVICE_PRINCIPAL_UUID> con el ID de aplicación del principal de servicio del paso anterior:
    GRANT USE CATALOG ON CATALOG <CATALOG_NAME> TO <SERVICE_PRINCIPAL_UUID>;
    GRANT USE SCHEMA ON SCHEMA <CATALOG_NAME>.<SCHEMA_NAME> TO <SERVICE_PRINCIPAL_UUID>;
    GRANT SELECT, MODIFY ON TABLE <CATALOG_NAME>.<SCHEMA_NAME>.<TABLE_NAME> TO <SERVICE_PRINCIPAL_UUID>;
    

Consulta la documentación de Databricks sobre Agregar principal de servicio a tu cuenta y Otorgar permisos en un objeto para más información.

Configuración

Configure el destino de Databricks (Zerobus) cuando configure un pipeline. Puedes configurar un pipeline en la interfaz de usuario, usando la API, o con Terraform. Los pasos en esta sección están configurados en la interfaz de usuario.

Nota: Los campos de registro que no están presentes en el esquema de la tabla son descartados. Por ejemplo, si un registro tiene los campos id, name y host, y el esquema de la tabla solo contiene las columnas name y host, entonces el campo id es descartado y no se escribe en la tabla.

Después de seleccionar el destino de Databricks (Zerobus) en la interfaz de usuario del pipeline:

Databricks (Zerobus) no convierte las marcas de tiempo en formato de cadena al de Databricks.TIMESTAMP tipo. Si su tabla utiliza una columna de marca de tiempo, consulte Convertir marcas de tiempo de cadena a formato de marca de tiempo para más información.
Para la gestión de secretos: Solo ingrese el identificador del secreto del cliente OAuth. No ingrese el valor real.
If you enter secret identifiers and then choose to use environment variables, the environment variable is the identifier entered and prepended with DD_OP_. For example, if you entered PASSWORD_1 for a password identifier, the environment variable for that password is DD_OP_PASSWORD_1.
  1. Ingrese el Punto de Ingesta para su espacio de trabajo de Databricks, como https://<workspace_id>.zerobus.<region>.cloud.databricks.com. El Observability Pipelines Worker envía registros a este punto de conexión.
  2. Ingrese el Nombre de la Tabla en el formato catalog.schema.table, como main.obs_pipelines.apache_common_logs.
  3. Ingrese el Punto de Finalización del Catálogo de Unidad para su espacio de trabajo de Databricks, como https://<workspace>.cloud.databricks.com. El Observability Pipelines Worker utiliza este punto de conexión para leer el esquema de la tabla.
  4. En el campo Auth - ID del Cliente, ingrese el ID de la aplicación del principal del servicio, como abcdefgh-1234-5678-abcd-ef0123456789.
  5. En el campo Auth - Secreto del Cliente, ingrese el identificador de su secreto del cliente OAuth. Si lo deja en blanco, se utiliza el predeterminado.

Opciones opcionales

Almacenamiento en búfer

Toggle the switch to enable Buffering Options. Enable a configurable buffer on your destination to ensure intermittent latency or an outage at the destination doesn’t create immediate backpressure, and allow events to continue to be ingested from your source. Disk buffers can also increase pipeline durability by writing data to disk, ensuring buffered data persists through a Worker restart. See Destination buffers for more information.

  • If left unconfigured, your destination uses a memory buffer with a capacity of 500 events.
  • To configure a buffer on your destination:
    1. Select the buffer type you want to set (Memory or Disk).
    2. Enter the buffer size and select the unit.
      1. Maximum memory buffer size is 128 GB.
      2. Maximum disk buffer size is 500 GB.
    3. In the Behavior on full buffer dropdown menu, select whether you want to block events or drop new events when the buffer is full.

Convertir marcas de tiempo en formato de cadena a formato de marca de tiempo

Si sus registros tienen marcas de tiempo en formato de cadena y su tabla de Databricks tiene una columna de marca de tiempo declarada como un TIMESTAMP tipo, debe convertir la cadena a formato de marca de tiempo antes de enviar registros al destino de Databricks (Zerobus). Databricks (Zerobus) solo puede convertir el formato de marca de tiempo a su TIMESTAMP tipo.

Si no convierte la marca de tiempo de cadena, el Observability Pipelines Worker genera un error similar a:

Protobuf encoding failed: Error converting timestamp field: Can't convert '2012-04-23T10[41]15Z' to i64: invalid digit found in string

Para convertir marcas de tiempo en formato de cadena a formato de marca de tiempo:

  1. Agregue un Custom Processor a su pipeline.
  2. Agregue una función con el siguiente script personalizado:
    .timestamp = parse_timestamp!(.timestamp, format: "%+")
    
    See parse_timestamp for more information.

Valores predeterminados secretos

These are the defaults used for secret identifiers and environment variables.

  • Identificador del secreto del cliente OAuth de Databricks:
    • Hace referencia al secreto del cliente OAuth para el principal de servicio que utiliza el Trabajador de Pipelines de Observabilidad para autenticarse en Databricks.
    • El identificador predeterminado es DESTINATION_DATABRICKS_ZEROBUS_OAUTH_CLIENT_SECRET.
  • Databricks OAuth client secret:
    • The OAuth client secret for the service principal the Observability Pipelines Worker uses to authenticate to Databricks.
    • The default environment variable is DD_OP_DESTINATION_DATABRICKS_ZEROBUS_OAUTH_CLIENT_SECRET.

Cómo funciona el destino

Agrupamiento de eventos

Un lote de eventos se envía cuando se cumple uno de estos parámetros. Consulta agrupamiento de eventos para más información.

Eventos máximosTamaño máximo (MB)Tiempo de espera (segundos)
Ninguno101