Compartir a través de


Formato delta en Azure Data Factory

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. ¡Obtenga más información sobre cómo iniciar una nueva evaluación gratuita!

En este artículo se señala cómo copiar datos con un lago delta, como origen o destino, almacenado en Azure Data Lake Store Gen2 o Azure Blob Storage con el formato delta. Este conector está disponible como conjunto de datos en línea en los flujos de datos de asignación como origen y receptor.

Propiedades de Asignación de instancias de Data Flow

Este conector está disponible como conjunto de datos en línea en los flujos de datos de asignación como origen y receptor.

Propiedades de origen

En la tabla siguiente se enumeran las propiedades que admite un origen delta. Puede editar estas propiedades en la pestaña Source options (Opciones del origen).

Nombre Descripción Obligatorio Valores permitidos Propiedad de script de flujo de datos
Formato El formato debe ser delta. delta format
Sistema de archivos Sistema de archivos o contenedor del lago delta String fileSystem
Ruta de acceso a la carpeta Directorio del lago delta String folderPath
Tipo de compresión Tipo de compresión de la tabla delta no bzip2
gzip
deflate
ZipDeflate
snappy
lz4
compressionType
Nivel de compresión Elija si la compresión debe completarse tan pronto como sea posible, incluso si el archivo resultante debe comprimirse de forma óptima. obligatorio si se especifica compressedType Optimal o Fastest compressionLevel
Viaje en el tiempo Elija si se debe consultar una instantánea anterior de una tabla delta no Consulta por marca de tiempo: marca de tiempo
Consulta por versión: Entero
timestampAsOf
versionAsOf
No permitir que se encuentren archivos Si es true, no se devuelve un error si no se encuentra ningún archivo no true o false ignoreNoFilesFound

Importar esquema

Delta solo está disponible como conjunto de datos insertado y, de forma predeterminada, no tiene un esquema asociado. Para obtener los metadatos de columna, haga clic en el botón Importar esquema en la pestaña Proyección. Esto le permite hacer referencia a los nombres de columna y los tipos de datos especificados por el corpus. Para importar el esquema, una sesión de depuración de flujo de datos debe estar activa y debe tener un archivo de definición de entidad CDM existente al que apuntar.

Ejemplo de script de origen delta

source(output(movieId as integer,
            title as string,
            releaseDate as date,
            rated as boolean,
            screenedOn as timestamp,
            ticketPrice as decimal(10,2)
            ),
    store: 'local',
    format: 'delta',
    versionAsOf: 0,
    allowSchemaDrift: false,
    folderPath: $tempPath + '/delta'
  ) ~> movies

Propiedades del receptor

En la tabla siguiente se enumeran las propiedades que admite un receptor delta. Puede editar estas propiedades en la pestaña Configuración.

Nombre Descripción Obligatorio Valores permitidos Propiedad de script de flujo de datos
Formato El formato debe ser delta. delta format
Sistema de archivos Sistema de archivos o contenedor del lago delta String fileSystem
Ruta de acceso a la carpeta Directorio del lago delta String folderPath
Tipo de compresión Tipo de compresión de la tabla delta no bzip2
gzip
deflate
ZipDeflate
snappy
lz4
TarGZip
tar
compressionType
Nivel de compresión Elija si la compresión debe completarse tan pronto como sea posible, incluso si el archivo resultante debe comprimirse de forma óptima. obligatorio si se especifica compressedType Optimal o Fastest compressionLevel
Vacío Elimina los archivos anteriores a la duración especificada que ya no es relevante para la versión de la tabla actual. Cuando se especifica un valor de 0 o menos, no se realiza la operación de vaciado. Entero vacuum
Acción Table Indica a ADF qué hacer con la tabla delta de destino en el receptor. Puede dejarla tal cual y anexar nuevas filas, sobrescribir la definición de tabla y los datos existentes con nuevos metadatos y datos o mantener la estructura de tabla existente, pero truncar primero todas las filas y, a continuación, insertar las filas nuevas. no Ninguno, Truncar, Sobrescribir deltaTruncate, sobrescribir
Método de actualización Al seleccionar solo "Permitir inserción" o al escribir en una nueva tabla delta, el destino recibe todas las filas entrantes independientemente de las directivas de fila establecidas. Si los datos contienen filas de otras directivas de fila, deben excluirse mediante una transformación de filtro anterior.

Cuando se seleccionan todos los métodos Update, se realiza una combinación, donde las filas se insertan, eliminan o actualizan según las directivas de fila establecidas mediante una transformación de Alteración de fila anterior.
true o false insertable
deletable
upsertable
updateable
Escritura optimizada Logre un mayor rendimiento de la operación de escritura mediante la optimización del orden aleatorio interno en los ejecutores de Spark. Como resultado, es posible que observe menos particiones y archivos de un tamaño mayor. no true o false optimizedWrite: true
Compactación automática Una vez completada la operación de escritura, Spark ejecutará automáticamente el comando OPTIMIZE para volver a organizar los datos, lo que dará lugar a más particiones si es necesario, para mejorar el rendimiento de la lectura en el futuro. no true o false autoCompact: true

Ejemplo de script de receptor delta

El script de flujo de datos asociado es:

moviesAltered sink(
          input(movieId as integer,
                title as string
            ),
           mapColumn(
                movieId,
                title
            ),
           insertable: true,
           updateable: true,
           deletable: true,
           upsertable: false,
           keys: ['movieId'],
            store: 'local',
           format: 'delta',
           vacuum: 180,
           folderPath: $tempPath + '/delta'
           ) ~> movieDB

Receptor delta con eliminación de particiones

Con esta opción en el método Update anterior (es decir, update/upsert/delete), puede limitar el número de particiones que se inspeccionan. Solo las particiones que satisfagan esta condición se capturan desde el almacén de destino. Puede especificar un conjunto fijo de valores que puede tomar una columna de partición.

Screenshot of partition pruning options are available to limit the inspection.

Ejemplo de script de receptor delta con eliminación de particiones

A continuación se proporciona un script de ejemplo.

DerivedColumn1 sink( 
      input(movieId as integer,
            title as string
           ), 
      allowSchemaDrift: true,
      validateSchema: false,
      format: 'delta',
      container: 'deltaContainer',
      folderPath: 'deltaPath',
      mergeSchema: false,
      autoCompact: false,
      optimizedWrite: false,
      vacuum: 0,
      deletable:false,
      insertable:true,
      updateable:true,
      upsertable:false,
      keys:['movieId'],
      pruneCondition:['part_col' -> ([5, 8])],
      skipDuplicateMapInputs: true,
      skipDuplicateMapOutputs: true) ~> sink2
 

Delta solo leerá 2 particiones en las que part_col == 5 y 8 del almacén delta de destino en lugar de todas las particiones. part_col es una columna por la que se particionan los datos delta de destino. No es necesario que esté presente en los datos de origen.

Opciones de optimización del receptor delta

En la pestaña Configuración, encontrará tres opciones más para optimizar la transformación del receptor delta.

  • Cuando la opción Combinar esquema está habilitada, permite la evolución del esquema, es decir, cualquier columna que esté presente en el flujo entrante actual pero no en la tabla Delta de destino se agregará automáticamente a su esquema. Esta opción se admite en todos los métodos de actualización.

  • Cuando la opción Compactación automática está activada, después de una escritura individual, la transformación comprueba si los archivos se pueden compactar más, y ejecuta un trabajo rápido OPTIMIZE (con tamaños de archivo de 128 MB en lugar de 1 GB) para compactar más los archivos de las particiones que tienen el mayor número de archivos pequeños. La compactación automática ayuda a fusionar un gran número de archivos pequeños en un número menor de archivos grandes. La compactación automática solo se inicia cuando hay al menos 50 archivos. Una vez realizada una operación de compactación, se crea una nueva versión de la tabla y se escribe un nuevo archivo que contiene los datos de varios archivos anteriores en un formato comprimido compacto.

  • Cuando la opción Optimizar escritura está habilitada, la transformación del receptor intenta escribir archivos de 128 MB para cada partición de tabla con el fin de optimizar dinámicamente los tamaños de partición en función de los datos reales. Este es un tamaño aproximado y puede variar en función de las características del conjunto de datos. Las escrituras optimizadas mejoran la eficacia general de las escrituras y las posteriores lecturas. Organiza las particiones de forma que mejora el rendimiento de las lecturas posteriores.

Sugerencia

El proceso de escritura optimizado ralentizará el trabajo de ETL general porque el receptor emitirá el comando Spark Delta Lake Optimize después de procesar los datos. Se recomienda usar la escritura optimizada con moderación. Por ejemplo, si tiene una canalización de datos por hora, ejecute un flujo de datos con escritura optimizada diaria.

Restricciones conocidas

Al escribir en un receptor delta, existe una limitación conocida en la que el número de filas escritas no se mostrará en el resultado de la supervisión.