FAQ do Auto Loader
Encontre respostas para perguntas frequentes sobre o Auto Loader da Databricks.
O Auto Loader processa o arquivo novamente quando o arquivo é anexado ou substituído?
Com a configuração default (cloudFiles.allowOverwrites = false), os arquivos são processados exatamente uma vez. Quando um arquivo é anexado ou sobrescrito, o Auto Loader não pode garantir qual versão do arquivo será processada.
Para permitir que o Auto Loader processe o arquivo novamente quando ele for anexado ou substituído, o senhor pode definir cloudFiles.allowOverwrites como true. Nesse caso, é garantido que o Auto Loader processará a versão mais recente do arquivo. No entanto, o Auto Loader não pode garantir qual versão intermediária será processada.
Tenha cuidado ao ativar cloudFiles.allowOverwrites no modo de notificação de arquivo. No modo de notificação de arquivos, o Auto Loader pode identificar novos arquivos por meio de notificações de arquivos e listagem de diretórios. Como a hora do evento de notificação do arquivo e a hora de modificação do arquivo podem ser diferentes, o Auto Loader poderia receber dois carimbos de data/hora diferentes e ingerir o mesmo arquivo duas vezes, mesmo que o arquivo não tenha sido atualizado.
Com o cloudFiles.allowOverwrites ativado, você mesmo deve lidar com registros duplicados. O Auto Loader reprocessará o arquivo inteiro, mesmo quando ele for anexado ou parcialmente atualizado. Em geral, Databricks recomenda usar Auto Loader para ingerir apenas arquivos imutáveis e usar a configuração default cloudFiles.allowOverwrites = false. Se o senhor tiver outras dúvidas, entre em contato com a equipe Databricks account .
Como o Auto Loader determina se um arquivo foi inserido ou não?
O Auto Loader normalmente ingere cada arquivo apenas uma vez com base em seu caminho de arquivo. No entanto, se a opção allowOverwrites for definida como true, o Auto Loader também usará o carimbo de data/hora da última modificação do arquivo para determinar se ele é novo ou se foi atualizado e precisa ser reingerido. Veja: O Auto Loader processa o arquivo novamente quando ele é anexado ou sobrescrito?
Se meus arquivos de dados não chegarem continuamente, mas em intervalos regulares, por exemplo, uma vez por dia, ainda devo usar essa fonte e há algum benefício?
Nesse caso, o senhor pode configurar um Job de transmissão estruturada Trigger.AvailableNow (disponível em Databricks Runtime 10.4 LTS e acima) e programar a execução após o horário previsto para a chegada do arquivo. O Auto Loader funciona bem com atualizações pouco frequentes ou frequentes. Mesmo que as eventuais atualizações sejam muito grandes, o site Auto Loader escala bem o tamanho da entrada. Auto Loadere os recursos de evolução do esquema fazem do Auto Loader o método recomendado para a ingestão incremental de dados.
Como o Auto Loader infere o esquema?
Quando o DataFrame é definido pela primeira vez, o Auto Loader lista seu diretório de origem e escolhe os 50 GB de dados ou 1.000 arquivos mais recentes (por tempo de modificação do arquivo) e os utiliza para inferir seu esquema de dados.
O Auto Loader também infere colunas de partição examinando a estrutura do diretório de origem e procura caminhos de arquivos que contenham a estrutura /key=value/. Se o diretório de origem tiver uma estrutura inconsistente, por exemplo:
base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json
O Auto Loader considera as colunas da partição como vazias. Use cloudFiles.partitionColumns para analisar explicitamente as colunas da estrutura do diretório.
Como o Auto Loader se comporta quando a pasta de origem está vazia?
Se o diretório de origem estiver vazio, o Auto Loader solicitará que o senhor forneça um esquema, pois não há dados para realizar a inferência.
Quando o Auto Loader infere o esquema? Será que evolui automaticamente após cada microlote?
O esquema é inferido quando o DataFrame é definido pela primeira vez em seu código. Durante cada microlote, as alterações de esquema são avaliadas em tempo real; portanto, o senhor não precisa se preocupar com os hits de desempenho. Quando a transmissão é reiniciada, ela pega o esquema evoluído do local do esquema e começa a executar sem nenhuma sobrecarga de inferência.
Qual é o impacto no desempenho da ingestão de dados ao usar a inferência de esquema do Auto Loader?
Você deve esperar que a inferência do esquema demore alguns minutos para diretórios de origem muito grandes durante a inferência inicial do esquema. O senhor não deve observar nenhum desempenho significativo durante a execução da transmissão. Se o código for executado em um notebook Databricks, o usuário poderá ver atualizações de status que especificam quando o Auto Loader listará o diretório para amostragem e inferirá o esquema de dados.
Devido a um bug, um arquivo incorreto alterou meu esquema drasticamente. O que devo fazer para reverter uma alteração de esquema?
Entre em contato com o suporte da Databricks para obter ajuda.
O que acontece se eu alterar o local do ponto de verificação ao reiniciar a transmissão?
Um local de ponto de controle mantém informações importantes de identificação de uma transmissão. Mudar a localização do ponto de controle significa efetivamente que o senhor abandonou a transmissão anterior e começou uma nova transmissão.
Preciso criar serviços de notificação de eventos antes?
Não. Se você escolher o modo de notificação de arquivos e fornecer as permissões necessárias, Auto Loader poderá criar um serviço de notificação de arquivos para você. Veja gerenciar filas de notificação de arquivos para cada transmissão Auto Loader separadamente (clássico).
Se os eventos de arquivo estiverem ativados no local externo em Unity Catalog, o serviço de eventos de arquivo poderá criar os eventos de arquivo em seu provedor de nuvem, e o senhor não precisará configurar Auto Loader para criá-los para cada transmissão. Consulte Usar o modo de notificação de arquivo com eventos de arquivo
Posso executar várias consultas de transmissão de diferentes diretórios de entrada no mesmo bucket/contêiner?
Sim, desde que não sejam diretórios pai-filho; por exemplo, prod-logs/ e prod-logs/usage/ não funcionariam porque /usage é um diretório filho de /prod-logs.
Posso usar esse recurso quando houver notificações de arquivos existentes no meu bucket ou contêiner?
Sim, desde que seu diretório de entrada não entre em conflito com o prefixo de notificação existente (por exemplo, os diretórios pai-filho acima).
Posso compartilhar uma fila SQS entre o Auto Loader e outros aplicativos?
A Databricks não recomenda o compartilhamento de uma fila SQS entre o Auto Loader e outros aplicativos. Em vez disso, encaminhe suas notificações de eventos do S3 para um tópico do SNS e, em seguida, inscreva uma fila SQS separada para cada aplicativo nesse tópico. Utilize uma política de filtro de inscrição SNS para garantir que apenas as mensagens relevantes sejam encaminhadas para cada fila. Em seguida, forneça a fila dedicada ao Auto Loader.
Como confirmar que os eventos de arquivo estão configurados corretamente?
Clique no botão Testar Conexão na página de local externo. Se os eventos de arquivo forem configurados corretamente, será exibida uma marca de seleção verde para o item Leitura de eventos de arquivo . Se você acabou de criar o local externo e ativou eventos de arquivo no modo Automatic, o teste mostra Skipped enquanto o Databricks configura as notificações para o local externo. Aguarde alguns minutos e clique em **Testar Conexão** novamente. Se o Databricks não tiver as permissões necessárias para configurar ou ler de eventos de arquivo, será exibido um erro para o item **Leitura de Eventos de Arquivo**.
Posso evitar uma listagem completa do diretório durante a execução inicial?
Nº. Mesmo que includeExistingFiles seja definido como false, o Auto Loader executa uma listagem de diretório para descobrir arquivos criados após o início da transmissão e se atualizar com o cache de eventos de arquivo (garantir uma posição de leitura válida no cache e armazená-la no ponto de verificação da transmissão).
Preciso definir cloudFiles.backfillInterval para evitar arquivos ausentes?
Não. A Databricks anteriormente recomendava essa configuração para o modo de notificação de arquivo clássico porque os sistemas de notificação de armazenamento na nuvem poderiam resultar em arquivos perdidos ou com chegada tardia. Agora, o Databricks executa listagens completas de diretórios no local externo. A primeira listagem completa do diretório começa assim que os eventos de arquivo são ativados no local externo. Cada listagem subsequente ocorre 24 horas após a última varredura completa, contanto que haja pelo menos uma transmissão do Auto Loader usando eventos de arquivo para ingerir dados.
Configurei eventos de arquivo com uma fila de armazenamento fornecida, mas a fila estava configurada incorretamente e perdi arquivos. Como garantir que o Auto Loader ingira os arquivos perdidos quando a fila estava configurada incorretamente?
Primeiro, verifique se a configuração incorreta da fila fornecida foi corrigida. Para verificar, clique no botão Testar conexão na página de localização externa. Se você configurar eventos de arquivo corretamente, aparecerá uma marca de seleção verde para o item Leitura de eventos de arquivo .
O Databricks executa uma listagem completa de diretório para locais externos com eventos de arquivo ativados. Esta listagem de diretório descobre quaisquer arquivos que foram perdidos durante o período de desconfiguração e os armazena no cache de eventos de arquivo.
Após a correção da configuração incorreta e o Databricks concluir a listagem do diretório, o Auto Loader continua a ler do cache de eventos de arquivo e ingere automaticamente quaisquer arquivos perdidos durante o período de configuração incorreta.
Como faço para me recuperar de um erro CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN ?
Esse erro ocorre quando os tokens de continuação armazenados no ponto de verificação Auto Loader para o serviço de eventos de arquivo se tornam inválidos.
Algumas causas comuns:
cloudFiles.useManagedFileEventsFoi desligado e depois ligado novamente.- Modificação da localização externa ou do volume da fonte.
- Modificação da fila fornecida.
Para se recuperar:
- Defina
.option("cloudFiles.listOnStart", "true")e.option("cloudFiles.validateOptions", false)na sua consulta de transmissão. - Reinicie a transmissão. Auto Loader realiza uma listagem completa do diretório ao iniciar e ignora os tokens de continuação inválidos.
- Após um microloteamento bem-sucedido, remova ambas as opções e reinicie a transmissão.
Para obter mais informações sobre a opção cloudFiles.listOnStart , consulte Notificação de arquivo.
Como faço para limpar o recurso de notificação de eventos criado pelo site Auto Loader?
O senhor pode usar o gerenciador de recurso na nuvem para listar e remover o recurso. O senhor também pode excluir esses recursos manualmente usando a UI do provedor de nuvem ou APIs.