Cómo cargar archivos Avro en ADLS Gen2 con Azure Data Factory
Este tutorial muestra cómo cargar archivos Avro en ADLS Gen2 usando Azure Data Factory, convirtiéndolos a Parquet para optimizar almacenamiento y lectura. Es útil cuando recibe dumps Avro de sistemas externos y desea preparar datos para análisis en Power BI o procesamiento en Synapse.
Prerequisitos
- Cuenta Azure con permisos para crear recursos.
- Storage account con ADLS Gen2 (hierarchical namespace) o OneLake de destino.
- Azure Data Factory (V2) creado.
- Archivos Avro disponibles en un Blob Storage, endpoint HTTP o FTP.
- Conocimientos básicos de pipelines en Azure Data Factory.
Paso 1: Crear Linked Services para origen y destino
Primero, cree dos Linked Services en Azure Data Factory: uno para el origen donde están los archivos Avro (Blob Storage, HTTP o FTP) y otro para el ADLS Gen2 de destino. Usar Managed Identity es recomendable por razones de seguridad.
// Exemplo JSON mínimo de Linked Service para Azure Blob Storage (a interface de authoring do ADF faz isto automaticamente) {
"name": "LS_BlobSource",
"properties": {
"type": "AzureBlobStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net"
}
}
}
Paso 2: Crear Datasets Avro y Parquet
Crear un Dataset que represente los archivos Avro (source) y otro Dataset para Parquet (sink). En el Dataset Avro seleccione el formato Avro; en Parquet elija el formato Parquet y defina la carpeta de salida en ADLS Gen2.
// Dataset Avro (exemplo de schema opcional) {
"name": "DS_Avro_Source",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"format": {
"type": "Avro"
}
}
}
}
Paso 3: Pipeline con actividad Copy para conversión Avro→Parquet
Agregue una actividad Copy en el pipeline. Defina la source para el Dataset Avro y el sink para el Dataset Parquet. En el Mapping elija Auto mapping (o defina un mapeo manual si desea renombrar campos). Configure performance y paralelismo según el tamaño de los archivos.
// Exemplo simplificado de activity Copy JSON (ADF pipeline) {
"name": "Copy_Avro_to_Parquet",
"type": "Copy",
"inputs": [{ "referenceName": "DS_Avro_Source", "type": "DatasetReference" }],
"outputs": [{ "referenceName": "DS_Parquet_Sink", "type": "DatasetReference" }],
"typeProperties": {
"enableStaging": false,
"source": { "type": "AvroSource" },
"sink": { "type": "ParquetSink" }
}
}
Paso 4: Manejar archivos de gran tamaño y rendimiento
Si los archivos Avro son grandes, configure MaxConcurrentConnections y utilice PolyBase o copia paralela cuando el sink sea Azure SQL/Synapse. Para ADLS Gen2, aumente el grado de paralelismo de la copia (degree of copy parallelism) y ajuste el block size en Parquet para mejorar la lectura posterior.
// Exemplo: propriedades de performance na actividade Copy
"typeProperties": {
"parallelCopies": 8,
"dataIntegrationUnit": 32
}
Paso 5: Tratar esquemas inconsistentes (errores comunes)
Errores comunes: schema drift en Avro, campos opcionales o tipos distintos entre archivos. Use Mapping Data Flows si necesita lógica para normalizar campos, o añada una actividad If Condition + Lookup para validar el schema antes de la copia.
// Pseudocódigo: verificar existência de campo via Get Metadata + If Condition Get Metadata -> schema
If schema contém campoX -> executar Copy
Else -> enviar alerta via Web Activity
Paso 6: Automatizar con trigger y logging
Creé un trigger programado o basado en evento (BlobCreated) para disparar el pipeline cuando lleguen nuevos archivos Avro. Configure diagnóstico/logging en ADF para capturar fallos y tiempos de ejecución, y utilice Azure Monitor para alertas.
// Exemplo: trigger tipo Event Grid para BlobCreated (a UI do ADF cria este JSON) {
"name": "Trigger_OnBlobCreated",
"type": "BlobEvents",
"properties": {
"events": [ "Microsoft.Storage.BlobCreated" ]
}
}
Verificar el resultado
Compruebe la carpeta de destino en ADLS Gen2: debería ver archivos Parquet con el tamaño y número esperados. Abra un archivo Parquet con herramientas como Azure Storage Explorer o utilice Synapse/Databricks para leer y validar el schema y muestras de datos. En ADF Monitor vea los detalles de la ejecución (Run details) de la actividad Copy para confirmar rowsCopied y tiempo.
Conclusión
Al convertir Avro a Parquet en Azure Data Factory obtiene archivos en formato columnar listos para análisis y optimiza costes y rendimiento. Próximos pasos: añadir validación de calidad (Data Flows) o integrar con Synapse para catálogos de tablas. Consejo: probar con archivos pequeños primero ayuda a ajustar el paralelismo sin costes elevados — ¿ha probado usar schema drift con Mapping Data Flows?