Compartir vía


Azure Stream Analytics: escritura en una tabla de Delta Lake

Delta Lake es un formato abierto que aporta confiabilidad, calidad y rendimiento a los lagos de datos. Puede usar Azure Stream Analytics para escribir directamente datos de streaming en las tablas de Delta Lake sin escribir una sola línea de código.

Un trabajo de Stream Analytics se puede configurar para escribir mediante un conector de salida nativo de Delta Lake, ya sea en una tabla Delta nueva o creada previamente en una cuenta de Azure Data Lake Storage Gen2. Este conector está optimizado para la ingesta de alta velocidad en tablas Delta en modo de anexión. También proporciona semántica del tipo "exactamente una vez", lo que garantiza que no se pierdan ni dupliquen los datos. La ingesta de flujos de datos en tiempo real desde Azure Event Hubs hasta tablas Delta permite realizar análisis por lotes o interactivos ad hoc.

Configuración de Delta Lake

Para escribir datos en Delta Lake, debe conectarse a una cuenta de Data Lake Storage Gen2. En la tabla siguiente se enumeran las propiedades relacionadas con la configuración de Delta Lake.

Nombre de propiedad Descripción
Formato de serialización de eventos Formato de serialización para los datos de salida. JSON, CSV, Avro y Parquet son compatibles. Delta Lake aparece aquí como una opción. Los datos están en formato Parquet si se selecciona Delta Lake.
Nombre de la ruta de acceso de Delta La ruta de acceso que se usa para escribir la tabla de Delta Lake en el contenedor especificado. Incluye el nombre de la tabla. Encontrará más información en la siguiente sección.
Columna de partición Opcional. El nombre {field} de los datos de salida a la partición. Solo se admite una columna de partición. El valor de la columna debe ser de tipo string.

Para ver la lista completa de la configuración de Data Lake Storage Gen2, consulte Introducción a Azure Data Lake Storage Gen2.

Nombre de la ruta de acceso de Delta

El nombre de la ruta de acceso de Delta se usa para especificar la ubicación y el nombre de la tabla de Delta Lake almacenada en Data Lake Storage Gen2.

Puede usar uno o varios segmentos de ruta de acceso para definir la ruta de acceso a la tabla Delta y el nombre de la tabla Delta. Un segmento de ruta de acceso es la cadena entre caracteres delimitadores consecutivos (por ejemplo, la barra diagonal /) que corresponden al nombre de un directorio virtual.

El nombre del segmento es alfanumérico y puede incluir espacios, guiones y caracteres de subrayado. El último segmento de línea se usará como nombre de tabla.

Entre las restricciones en el nombre de la ruta de acceso de Delta se incluyen las siguientes:

  • Los nombres de campo no distinguen entre mayúsculas y minúsculas. Por ejemplo, el servicio no puede diferenciar entre las columnas ID y id.
  • No se permite ningún nombre de {field} dinámico. Por ejemplo, {ID} se trata como texto {ID}.
  • El número de segmentos de ruta de acceso que componen el nombre no puede superar los 254.

Ejemplos

Ejemplos de nombre de ruta de acceso de Delta:

  • Ejemplo 1: WestUS/CA/factory1/device-table
  • Ejemplo 2: Test/demo
  • Ejemplo 3: mytable

Archivos de salida de ejemplo:

  1. En el contenedor elegido, la ruta de acceso del directorio es WestEurope/CA/factory1 y el nombre de la carpeta de la tabla Delta es device-table.
  2. En el contenedor elegido, la ruta de acceso del directorio es Test y el nombre de la carpeta de la tabla Delta es demo.
  3. En el contenedor elegido, el nombre de la carpeta de la tabla Delta es mytable.

Crear una nueva tabla

Si aún no hay una tabla de Delta Lake con el mismo nombre y en la ubicación especificada por el nombre de la ruta de acceso de Delta, Stream Analytics creará una nueva tabla Delta de manera predeterminada. Esta nueva tabla se crea con la siguiente configuración:

Escritura en la tabla

Si hay una tabla de Delta Lake existente con el mismo nombre y en la ubicación especificada por el nombre de la ruta de acceso de Delta, de forma predeterminada, Stream Analytics escribe nuevos registros en la tabla existente.

Entrega exactamente una vez

El registro de transacciones permite que Delta Lake garantice el procesamiento exactamente una vez. Stream Analytics también proporciona la entrega exactamente una vez cuando los datos se transfieren a Data Lake Storage Gen2 durante una sola ejecución de trabajos.

Cumplimiento de esquemas

El cumplimiento de esquemas significa que todas las escrituras nuevas en una tabla se aplican para que sean compatibles con el esquema de la tabla de destino en tiempo de escritura, a fin de garantizar la calidad de los datos.

Todos los registros de los datos de salida se proyectan en el esquema de la tabla existente. Si la salida se escribe en una nueva tabla Delta, el esquema de tabla se crea con el primer registro. Si los datos entrantes tienen una columna adicional, en comparación con el esquema de tabla existente, se escriben en la tabla sin la columna adicional. Si a los datos entrantes les falta una columna, en comparación con el esquema de tabla existente, se escriben en la tabla con la columna, pero el valor de esta será nulo.

Si no hay ninguna intersección entre el esquema de la tabla Delta y el esquema de un registro del trabajo de streaming, se considera una instancia de error de conversión de esquema. No es el único caso que se considera un error de conversión de esquema.

En caso de error de conversión de esquema, el comportamiento del trabajo sigue la directiva de control de errores de datos de salida configurada a nivel de trabajo.

Puntos de control de registro Delta

El trabajo de Stream Analytics crea puntos de control de registro Delta periódicamente en el formato V1. Los puntos de control de registro Delta son instantáneas de la tabla Delta y suelen contener el nombre del archivo de datos generado por el trabajo de Stream Analytics. Si el número de archivos de datos es grande, esto conduce a puntos de control grandes, lo que puede provocar problemas de memoria en el trabajo de Stream Analytics.

Limitaciones

  • No se admite la clave de partición dinámica (especificando el nombre de una columna del esquema de registro en la ruta de acceso delta).
  • No se admiten varias columnas de partición. Si quiere varias columnas de partición, la recomendación es usar una clave compuesta en la consulta y después especificarla como columna de partición.
    • Se puede crear una clave compuesta en la consulta. Un ejemplo es "SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]".
  • La escritura en Delta Lake es de solo anexión.
  • La comprobación de esquemas en las pruebas de consulta no está disponible.
  • Stream Analytics no realiza la compactación de archivos pequeños.
  • Todos los archivos de datos se crean sin compresión.
  • No se admiten los tipos Date y Decimal.
  • Se produce un error al escribir en tablas existentes de Escritor versión 7 o posterior con características de escritor.
  • Cuando un trabajo de Stream Analytics escribe un lote de datos en Delta Lake, puede generar varias acciones Agregar archivo. Cuando hay demasiadas acciones Agregar archivo generadas para un solo lote, es posible que el trabajo de Stream Analytics se bloquee.
  • Los trabajos de Stream Analytics solo pueden leer y escribir puntos de control V1 no compuestos. No se admiten puntos de control compuestos ni el formato de punto de control V2.