Pular para o conteúdo principal

FAQ do Auto Loader

Perguntas frequentes sobre o Databricks Auto Loader.

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 .

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.

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 um serviço de notificação de eventos com antecedência?

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

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.

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 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.

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).

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 Autoloader infere o esquema? Ele 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.

Como o Auto Loader determina se um arquivo foi inserido ou não?

O Auto Loader normalmente processa cada arquivo apenas uma vez, com base em seu caminho. No entanto, se você definir a opção allowOverwrites para true, o Auto Loader também usa 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 Auto Loader processa o arquivo novamente quando ele é anexado ou sobrescrito?