Perguntas frequentes sobre o Carregador Automático

Encontre respostas para perguntas frequentes sobre o Carregador Automático do Databricks.

O Auto Loader processa o arquivo novamente quando ele é anexado ou substituído?

Com a configuração padrão (cloudFiles.allowOverwrites = false), os arquivos são processados exatamente uma vez. Quando um arquivo é acrescentado ou substituído, o Carregador Automático não pode garantir qual versão do arquivo será processada. Para permitir que o Carregador Automático processe o arquivo novamente quando ele é acrescentado ou substituído, você pode definir cloudFiles.allowOverwrites como true. Nesse caso, o Carregador Automático tem a garantia de processar a versão mais recente do arquivo. No entanto, o Carregador Automático não pode garantir qual versão intermediária é processada.

Tenha cuidado se você habilitar cloudFiles.allowOverwrites no modo de notificação de arquivo. No modo de notificação de arquivo, o Carregador Automático pode identificar novos arquivos por meio de notificações de arquivo e listagem de diretório. Como a hora do evento de notificação de arquivo e o tempo de modificação do arquivo podem ser diferentes, o Carregador Automático pode receber dois carimbos de data/hora diferentes e ingerir o mesmo arquivo duas vezes, mesmo que o arquivo não tenha sido atualizado.

Com cloudFiles.allowOverwrites habilitado, você deve manipular registros duplicados por conta própria. O Carregador Automático reprocessará todo o arquivo mesmo quando ele for acrescentado ou parcialmente atualizado. Em geral, o Azure Databricks recomenda usar o Carregador Automático para ingerir apenas arquivos imutáveis e usar a configuração cloudFiles.allowOverwrites = falsepadrão. Se você tiver mais dúvidas, entre em contato com sua equipe de conta do Azure Databricks.

Como o Carregador Automático determina se um arquivo foi ingerido ou não?

O Carregador Automático normalmente ingere cada arquivo apenas uma vez com base em seu caminho de arquivo. No entanto, se você definir a opção allowOverwrites como true, o Carregador Automático também usará o carimbo de data/hora da última modificação do arquivo para determinar se um arquivo é novo ou foi atualizado e precisa ser ingerido novamente. Veja O Carregador Automático processa o arquivo novamente quando o arquivo é acrescentado ou substituído?

Se meus arquivos de dados não chegarem continuamente, mas em intervalos regulares, por exemplo, uma vez por dia, eu devo usar essa fonte? Qual é o benefício?

Nesse caso, você pode configurar um trabalho de streaming estruturado Trigger.AvailableNow (disponível no Databricks Runtime 10.4 LTS e superior) e agendar para ser executado após o horário previsto de chegada do arquivo. O Carregador automático funciona bem com atualizações frequentes ou não frequentes. Mesmo que as atualizações eventuais sejam muito grandes, o Carregador automático realiza um bom dimensionamento em relação ao tamanho da entrada. As técnicas eficientes de descoberta de arquivos do Carregador Automático e as funcionalidades de evolução do esquema tornam o Carregador Automático o método recomendado para ingestão de dados incremental.

Como o Carregador Automático infere o esquema?

Quando o DataFrame é definido pela primeira vez, o Carregador Automático lista o diretório de origem e escolhe (por hora de modificação de arquivo) os 50 GB de dados ou 1.000 arquivos mais recentes e os usa para inferir o seu esquema de dados.

O Carregador Automático também infere colunas de partição examinando a estrutura do diretório de origem e procura caminhos de arquivo 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 Carregador Automático infere as colunas de partição como vazias. Use cloudFiles.partitionColumns para analisar explicitamente colunas da estrutura de diretório.

Como o Carregador Automático se comporta quando a pasta de origem está vazia?

Se o diretório de origem estiver vazio, o Carregador Automático exigirá que você forneça um esquema, pois não há dados para executar a inferência.

Quando o Carregador Automático infere o esquema? Isso evolui automaticamente após cada micro-lote?

O esquema é inferido quando o DataFrame é definido pela primeira vez em seu código. Durante cada micro-lote, as alterações de esquema são avaliadas em tempo real; portanto, você não precisa se preocupar com impactos de desempenho. Quando o fluxo é reiniciado, ele capta o esquema evoluído do local do esquema e começa a executar sem nenhuma sobrecarga associada à inferência.

Qual é o impacto no desempenho ao ingerir os dados ao usar a inferência de esquema do Carregador Automático?

Você deve esperar que a inferência de esquema leve alguns minutos para diretórios de origem muito grandes durante a inferência de esquema inicial. Você não deve observar quedas de desempenho significativas durante a execução do fluxo. Se você executar seu código em um notebook do Azure Databricks, poderá ver atualizações de status que especificam quando o Auto Loader estará listando o seu diretório para amostragem e inferência do esquema de dados.

Devido a um bug, um arquivo com problemas alterou drasticamente meu esquema. O que devo fazer para reverter uma alteração de esquema?

Entre em contato com o suporte do Databricks para obter ajuda.

O que acontece se eu alterar o local do ponto de verificação ao reiniciar o fluxo?

O local de ponto de verificação mantém informações importantes de identificação do fluxo. Alterar o local do ponto de verificação efetivamente significa que você abandonou o fluxo anterior e iniciou um novo fluxo.

Preciso criar um serviço de notificação de eventos com antecedência?

Não. Se você escolher o modo de notificação de arquivo e fornecer as permissões necessárias, o Carregador automático criará os serviços de notificação de arquivo para você. Consulte Gerenciar filas de notificação de arquivo para cada fluxo do Carregador Automático separadamente (clássico).

Se os eventos de arquivo estiverem habilitados no local externo no Catálogo do Unity, o serviço de eventos de arquivo poderá criar os eventos de arquivo em seu provedor de nuvem e você não precisará configurar o Carregador Automático para criá-los para cada fluxo. Veja o uso do modo de notificação de arquivo com eventos de arquivo

Posso executar várias consultas de streaming de diferentes diretórios de entrada no mesmo bucket/contêiner?

Sim, desde que eles não sejam diretórios pai-filho; por exemplo, prod-logs/ e prod-logs/usage/ não funcionaria porque /usage é um diretório filho de /prod-logs.

Posso usar esse recurso quando há notificações de arquivos ativas no bucket ou contêiner?

Sim, desde que o diretório de entrada não conflite com o prefixo de notificação (por exemplo, os diretórios pai-filho acima).

Posso compartilhar uma fila do SQS entre o Carregador Automático e outros aplicativos?

O Databricks não recomenda o compartilhamento de uma fila do SQS entre o Carregador Automático e outros aplicativos. Em vez disso, encaminhe suas notificações de evento S3 para um tópico SNS e configure uma fila SQS separada para cada aplicativo se inscrever nesse tópico. Use uma política de filtro de assinatura SNS para garantir que somente as mensagens relevantes sejam encaminhadas para cada fila. Em seguida, forneça a fila dedicada ao Carregador Automático.

Como fazer para confirmar se os eventos de arquivo estão configurados corretamente?

Clique no botão Testar Conexão na página da localização externa. Se você configurar os eventos de arquivo corretamente, verá uma marca de verificação verde ao lado do item Leitura de eventos de arquivo. Se você acabou de criar o local externo e habilitou eventos de arquivo no Automatic modo, o teste mostra Skipped enquanto o Azure Databricks configura notificações para o local externo. Aguarde alguns minutos e clique em Testar Conexão novamente. Se Azure Databricks não tiver as permissões necessárias para configurar ou ler eventos de arquivo, você verá um erro para o item File Events Read.

Posso evitar uma listagem completa de diretórios durante a execução inicial?

Não. Mesmo se includeExistingFiles estiver definido como false, o Carregador Automático executará uma listagem de diretório para descobrir arquivos criados após o início do fluxo e se atualizar com o cache de eventos de arquivo (proteja uma posição de leitura válida no cache e armazene-a no ponto de verificação do fluxo).

Preciso definir cloudFiles.backfillInterval para evitar arquivos ausentes?

Não. O Azure Databricks recomendou anteriormente essa configuração para o modo de notificação de arquivo clássico porque os sistemas de notificação de armazenamento em nuvem podem resultar em arquivos perdidos ou de chegada tardia. Agora, o Azure Databricks executa listagens completas de diretório no local externo. A primeira listagem completa de diretórios começa assim que os eventos de arquivo são habilitados no local externo. Cada listagem subsequente ocorre 24 horas após a última verificação completa, desde que haja pelo menos um fluxo do Carregador Automático usando eventos de arquivo para ingerir dados.

Configurei eventos de arquivo com uma fila de armazenamento fornecida, mas a fila foi configurada incorretamente e perdi arquivos. Como fazer para garantir que o Carregador Automático ingera os arquivos perdidos quando minha fila foi configurada incorretamente?

Primeiro, verifique se a configuração incorreta da fila fornecida está corrigida. Para verificar, clique no botão Testar Conexão na página de localização externa. Se você configurar eventos de arquivo corretamente, um sinal de marcação verde será exibido para o item Leitura de Eventos de Arquivo.

O Azure Databricks executa uma listagem de diretório completa para locais externos com eventos de arquivo habilitados. Essa listagem de diretório descobre todos os arquivos que foram perdidos durante o período de configuração incorreta e os armazena no cache de eventos de arquivo.

Depois que a configuração incorreta for corrigida e o Azure Databricks concluir a listagem de diretórios, o Carregador Automático continuará a ler do cache de eventos de arquivo e ingerirá automaticamente todos os arquivos perdidos durante o período de configuração incorreta.

Como fazer para me recuperar de um CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN erro?

Esse erro ocorre quando o token de continuação armazenado no ponto de verificação do Carregador Automático para o serviço de eventos de arquivo se torna inválido.

Algumas causas comuns:

  • cloudFiles.useManagedFileEvents foi desativado e depois ativado novamente.
  • Modificação da localização ou do volume externo da fonte.
  • Modificação da fila fornecida.

Para recuperar:

  1. Defina .option("cloudFiles.listOnStart", "true") e .option("cloudFiles.validateOptions", false) na consulta de streaming.
  2. Reinicie o fluxo. O Carregador Automático executa uma listagem completa de diretórios no início e ignora o token de continuação inválido.
  3. Após um microlote bem-sucedido, remova ambas as opções e reinicie o fluxo de dados.

Para obter mais informações sobre a opção cloudFiles.listOnStart, consulte notificação de arquivo.

Como fazer para limpar os recursos de notificação de eventos criados pelo Carregador automático?

Você pode usar o Cloud Resource Manager para listar e subdividir os recursos. Você também pode excluir esses recursos manualmente usando a interface do usuário ou as APIs do provedor de nuvem.