O que é o Auto Loader?
O Auto Loader processa de forma progressiva e eficiente novos arquivos de dados à medida que chegam ao armazenamento em nuvem sem qualquer configuração adicional.
Como o Auto Loader funciona?
Auto Loader processa de forma incremental e eficiente novos arquivos de dados à medida que chegam ao armazenamento cloud . Ele fornece uma fonte de transmissão estruturada chamada cloudFiles. Dado um caminho de diretório de entrada no armazenamento de arquivos cloud , a fonte cloudFiles processa automaticamente novos arquivos à medida que chegam, com a opção de também processar arquivos existentes nesse diretório. Auto Loader oferece suporte tanto para Python quanto para SQL no pipeline declarativo LakeFlow Spark .
Você pode usar o Auto Loader para processar bilhões de arquivos para migrar ou preencher uma tabela. O Auto Loader é dimensionado para ser compatível com a ingestão quase em tempo real de milhões de arquivos por hora.
Fontes suportadas pelo Auto Loader
O Auto Loader pode carregar arquivos de dados das seguintes fontes:
-
Amazon S3 (
s3://) -
Azure lago de dados Armazenamento (ADLS,
abfss://) -
Google Cloud Storage (GCS,
gs://) -
Azure Blob Storage (
wasbs://)
O driver herdado do Blob de armazenamento do Windows Azure (WASB) foi descontinuado. O ABFS tem vários benefícios em relação ao WASB. Consulte a documentação do Azure sobre ABFS. Para obter a documentação sobre como trabalhar com o driver WASB legado, consulte Conectar-se ao armazenamento Azure Blob com WASB (legado).
- Databricks File System (DBFS,
dbfs:/).
O Auto Loader pode ingerir os formatos de arquivo JSON, CSV, XML, PARQUET, AVRO, ORC, TEXT e BINARYFILE.
Como o Auto Loader acompanha o progresso da ingestão?
Conforme os arquivos são descobertos, seus metadados são mantidos em um armazenamento de chave-valor escalável (RocksDB) no local do ponto de verificação do pipeline do Auto Loader. Esse armazenamento de chave-valor garante que os dados sejam processados todos de uma vez.
Em caso de falhas, o site Auto Loader pode retomar de onde parou por meio das informações armazenadas no local do ponto de verificação e continuar a oferecer garantias de exatamente uma vez ao gravar dados em Delta Lake. O senhor não precisa manter ou gerenciar nenhum estado para obter tolerância a falhas ou uma semântica exatamente igual.
Ingestão incremental usando Auto Loader com pipeline declarativo LakeFlow Spark
Databricks recomenda Auto Loader no pipeline declarativo LakeFlow Spark para ingestão incremental de dados. O pipeline declarativo LakeFlow Spark estende a funcionalidade do Apache Spark e permite que você escreva apenas algumas linhas de Python ou SQL declarativo para implantar um pipeline de dados de qualidade de produção com:
- Dimensionamento automático da infraestrutura de computação para redução de custos
- Verificações de qualidade de dados com expectativas
- Tratamento automático da evolução do esquema
- monitoramento via métricas no evento log
Você não precisa fornecer um esquema ou local de ponto de verificação, pois o pipeline declarativo LakeFlow Spark gerencia automaticamente essas configurações para o seu pipeline. Consulte Carregar dados no pipeline.
Databricks também recomenda Auto Loader sempre que o senhor usar Apache Spark transmissão estruturada para ingerir dados do armazenamento de objetos na nuvem. As APIs estão disponíveis em Python e Scala.
Obter começar com Databricks Auto Loader
Consulte os artigos a seguir para começar a configurar a ingestão incremental de dados usando Auto Loader com o pipeline declarativo LakeFlow Spark :
- Tutorial: Crie um pipeline ETL com LakeFlow Spark Declarative pipeline
- Configure a ingestão incremental do Google Cloud Storage.
Exemplos: Padrões comuns do Auto Loader
Para obter exemplos de padrões comuns do Auto Loader, consulte Padrões comuns de carregamento de dados.
Configurar as opções do Auto Loader
Você pode ajustar o Auto Loader com base no volume de dados, variedade e velocidade.
- Configurar inferência e evolução de esquema no Auto Loader
- Configurar o Auto Loader para cargas de trabalho de produção
Para obter uma lista completa das opções do Auto Loader, consulte:
Se o senhor encontrar um desempenho inesperado, consulte as perguntas frequentes.
Configurar os modos de detecção de arquivos do Auto Loader
O Auto Loader suporta dois modos de detecção de arquivos. Veja:
- Configurar a transmissão Auto Loader em modo de listagem de diretórios
- Configurar a transmissão do Auto Loader no modo de notificação de arquivo
Lidar com dados fora de ordem
O Auto Loader não garante a ordem em que os arquivos são descobertos ou processados, independentemente de você usar a listagem de diretórios ou o modo de notificação de arquivos. Utilize as seguintes estratégias para projetar seu pipeline de forma a lidar com a chegada de arquivos fora de ordem.
Pipeline declarativoLakeFlow Spark com AUTO CDC
Se você usar o pipeline LakeFlow Spark Declarative com Auto Loader e AUTO CDC, configure a retenção de tombstone para que os registros excluídos sejam retidos por tempo suficiente para lidar com chegadas de arquivos fora de ordem. Defina a propriedade de tabela pipelines.cdc.tombstoneGCThresholdInSeconds na tabela de transmissão de destino para um valor que exceda o atraso máximo esperado entre a chegada do evento e a execução pipeline . O período de retenção default é de dois dias. Para obter detalhes, consulte create_auto_cdc_flow.
transmissão estruturada sem pipeline declarativo LakeFlow Spark
Se você usar Apache Spark transmissão estruturada diretamente com Auto Loader (sem o pipeline declarativo LakeFlow Spark ), considere os seguintes padrões para lidar com dados fora de ordem:
- Prefira exclusões lógicas a exclusões rígidas: rastreie um indicador
deletede um carimbo de data/hora em vez de remover linhas, para que uma exclusão tardia não entre em conflito com registros anteriores. - Compare os carimbos de data/hora antes de aplicar as atualizações: Ao realizar uma operação de upsert, compare o carimbo de data/hora da atualização do registro de entrada com o carimbo de data/hora atual da linha de destino para evitar a sobrescrita com dados desatualizados.
Benefícios do Auto Loader em relação ao uso da transmissão estruturada diretamente nos arquivos
No Apache Spark, você pode ler arquivos de forma incremental usando spark.readStream.format(fileFormat).load(directory). O Auto Loader oferece os seguintes benefícios em relação à origem do arquivo:
- Escalabilidade: o Auto Loader pode descobrir bilhões de arquivos com eficiência. Os preenchimentos podem ser executados de forma assíncrona para evitar o desperdício de recursos de computação.
- Desempenho: O custo de descoberta de arquivos com Auto Loader aumenta com o número de arquivos que estão sendo ingeridos, em vez do número de diretórios em que os arquivos podem ser encontrados. Consulte Configurar Auto Loader transmissões no modo de listagem de diretórios.
- Suporte à inferência e evolução de esquemas: O Auto Loader pode detectar desvios de esquema, notificá-lo quando ocorrerem alterações de esquema e resgatar dados que, de outra forma, teriam sido ignorados ou perdidos. Consulte Como funciona a inferência de esquema do Auto Loader.
- Custo: O Auto Loader usa APIs nativas da nuvem para obter listas de arquivos existentes no armazenamento. Além disso, o modo de notificação de arquivos do Auto Loader pode ajudar a reduzir ainda mais seus custos de nuvem, evitando a listagem de diretórios. Auto Loader pode configurar automaticamente o serviço de notificação de arquivos no armazenamento para tornar a descoberta de arquivos muito mais barata.