Como carregar ficheiros Avro para ADLS Gen2 com Azure Data Factory
Este tutorial mostra como carregar ficheiros Avro para ADLS Gen2 usando o Azure Data Factory, convertendo-os para Parquet para optimizar armazenamento e leitura. É útil quando recebe dumps Avro de sistemas externos e pretende preparar dados para análises no Power BI ou processamento no Synapse.
Pré‑requisitos
- Conta Azure com permissão para criar recursos.
- Storage account com ADLS Gen2 (hierarchical namespace) ou OneLake de destino.
- Azure Data Factory (V2) criado.
- Ficheiros Avro disponíveis num Blob Storage, endpoint HTTP ou FTP.
- Conhecimentos básicos de pipelines no Azure Data Factory.
Passo 1: Criar Linked Services para origem e destino
Primeiro, crie dois Linked Services no Azure Data Factory: um para a origem onde estão os ficheiros Avro (Blob Storage, HTTP ou FTP) e outro para o ADLS Gen2 de destino. Usar Managed Identity é recomendado por razões de segurança.
// 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"
}
}
}
Passo 2: Criar Datasets Avro e Parquet
Crie um Dataset que represente os ficheiros Avro (source) e outro Dataset para Parquet (sink). No Dataset Avro seleccione o formato Avro; no Parquet escolha o formato Parquet e defina a pasta de saída em ADLS Gen2.
// Dataset Avro (exemplo de schema opcional) {
"name": "DS_Avro_Source",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"format": {
"type": "Avro"
}
}
}
}
Passo 3: Pipeline com actividade Copy para conversão Avro→Parquet
Adicione uma actividade Copy no pipeline. Defina a source para o Dataset Avro e o sink para o Dataset Parquet. No Mapping escolha Auto mapping (ou defina um mapeamento manual se quiser renomear campos). Configure performance e paralelismo conforme o tamanho dos ficheiros.
// 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" }
}
}
Passo 4: Lidar com ficheiros de grande dimensão e performance
Se os ficheiros Avro forem grandes, configure o MaxConcurrentConnections e use PolyBase ou copy paralelo quando o sink for Azure SQL/Synapse. Para ADLS Gen2, aumente o grau de paralelismo da cópia (degree of copy parallelism) e ajuste o block size no Parquet para melhorar a leitura posterior.
// Exemplo: propriedades de performance na actividade Copy
"typeProperties": {
"parallelCopies": 8,
"dataIntegrationUnit": 32
}
Passo 5: Tratar esquemas inconsistentes (erros comuns)
Erros comuns: schema drift em Avro, campos opcionais ou tipos diferentes entre ficheiros. Use Mapping Data Flows se precisar de lógica para normalizar campos, ou adicione uma actividade If Condition + Lookup para validar o schema antes da cópia.
// 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
Passo 6: Automatizar com trigger e logging
Crie um trigger agendado ou baseado em evento (BlobCreated) para disparar o pipeline quando novos ficheiros Avro chegarem. Configure diagnóstico/logging no ADF para capturar falhas e tempos de execução, e utilize o 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 o resultado
Verifique a pasta de destino em ADLS Gen2: deverá ver ficheiros Parquet com o tamanho e o número esperados. Abra um ficheiro Parquet com ferramentas como o Azure Storage Explorer ou utilize o Synapse/Databricks para ler e validar o schema e amostras de dados. No ADF Monitor veja os detalhes da execução (Run details) da actividade Copy para confirmar rowsCopied e tempo.
Conclusão
Ao converter Avro para Parquet em Azure Data Factory obtém ficheiros em formato columnar prontos para análise e optimiza custos e performance. Próximos passos: adicionar validação de qualidade (Data Flows) ou integrar com o Synapse para catálogos de tabelas. Dica: testar com ficheiros pequenos primeiro ajuda a ajustar o paralelismo sem custos elevados — já experimentou usar schema drift com Mapping Data Flows?