Partilhar via


Azure Stream Analytics: escrever numa tabela Delta Lake

O Delta Lake é um formato aberto que traz confiabilidade, qualidade e desempenho aos data lakes. Pode usar o Azure Stream Analytics para escrever diretamente dados em streaming para as suas tabelas Delta Lake sem escrever uma única linha de código.

Um trabalho de Stream Analytics pode ser configurado para escrever usando um conector de saída nativo para Delta Lake, quer seja para uma nova tabela Delta ou para uma tabela Delta já criada numa conta do Azure Data Lake Storage Gen2. Este conector é otimizado para ingestão de alta velocidade em tabelas Delta no modo Append. Ele também fornece semântica exata uma vez, o que garante que nenhum dado seja perdido ou duplicado. Ingerir fluxos de dados em tempo real dos Azure Event Hubs para as tabelas Delta permite-lhe realizar análises interativas ou em lote ad hoc.

Configuração do Delta Lake

Para escrever dados no Delta Lake, precisa de se ligar a uma conta Data Lake Storage Gen2. A tabela a seguir lista as propriedades relacionadas à configuração do Delta Lake.

Nome da propriedade Descrição
Formato de serialização de eventos Formato de serialização para dados de saída. JSON, CSV, Avro e Parquet são suportados. Delta Lake está listado como uma opção aqui. Os dados estão no formato Parquet quando selecionado o Delta Lake.
Nome do caminho delta O caminho usado para gravar sua tabela Delta Lake dentro do contêiner especificado. Inclui o nome da tabela. Mais informações estão na próxima seção.
Coluna de partição Opcional. O nome {field} dos dados de saída para partição. Apenas uma coluna de partição é suportada. O valor da coluna deve ser do string tipo.

Para ver a lista completa das configurações Data Lake Storage Gen2, consulte Azure Data Lake Storage Gen2 visão geral.

Nome do caminho delta

O nome do caminho Delta é usado para especificar a localização e o nome da sua tabela Delta Lake armazenada no Data Lake Storage Gen2.

Você pode usar um ou mais segmentos de caminho para definir o caminho para a tabela Delta e o nome da tabela Delta. Um segmento de caminho é a cadeia de caracteres entre caracteres delimitadores consecutivos (por exemplo, a barra inclinada /) que corresponde ao nome de um diretório virtual.

O nome do segmento é alfanumérico e pode incluir espaços, hífenes e sublinhados. O último segmento de caminho é usado como o nome da tabela.

As restrições para o nome do caminho Delta incluem:

  • Os nomes dos campos não são diferenciais quanto ao uso de maiúsculas ou minúsculas. Por exemplo, o serviço não pode diferenciar entre coluna ID e id.
  • Nenhum nome dinâmico {field} é permitido. Por exemplo, {ID} é tratado como texto {ID}.
  • O número de segmentos de caminho que compõem o nome não pode exceder 254.

Exemplos

Exemplos de um nome de caminho Delta:

  • Exemplo 1: WestUS/CA/factory1/device-table
  • Exemplo 2: Test/demo
  • Exemplo 3: mytable

Exemplos de arquivos de saída:

  1. No contêiner escolhido, o caminho do diretório é WestEurope/CA/factory1 e o nome da pasta da tabela Delta é device-table.
  2. No contêiner escolhido, o caminho do diretório é Test e o nome da pasta da tabela Delta é demo.
  3. No contêiner escolhido, o nome da pasta da tabela Delta é mytable.

Criar uma nova tabela

Se ainda não houver uma tabela Delta Lake com o mesmo nome e no local especificado pelo nome do caminho Delta, por padrão, o Stream Analytics criará uma nova tabela Delta. Esta nova tabela é criada com a seguinte configuração:

Escrever na tabela

Se já existir uma tabela Delta Lake com o mesmo nome e no local especificado pelo nome do caminho Delta, por padrão, o Stream Analytics grava novos registros na tabela existente.

Entrega exatamente uma vez

O log de transações permite que o Delta Lake garanta o processamento exatamente uma vez. O Stream Analytics também fornece uma entrega exata ao enviar dados para o Data Lake Storage Gen2 durante uma única execução de trabalho.

Aplicação de esquemas

A imposição de esquema significa que todas as novas gravações numa tabela são exigidas para serem compatíveis com o esquema da tabela de destino no momento da gravação, para garantir a qualidade dos dados.

Todos os registros de dados de saída são projetados para o esquema da tabela existente. Se a saída for gravada em uma nova tabela Delta, o esquema da tabela será criado com o primeiro registro. Se os dados de entrada tiverem uma coluna extra em comparação com o esquema de tabela existente, eles serão gravados na tabela sem a coluna extra. Se os dados de entrada estiverem faltando uma coluna em comparação com o esquema de tabela existente, eles serão gravados na tabela com a coluna sendo nula.

Se não houver interseção entre o esquema da tabela Delta e o esquema de um registo do trabalho de streaming, isso será considerado um caso de falha de conversão de esquema. Não é o único caso considerado falha de conversão de esquema.

Na falha da conversão de esquema, o comportamento do trabalho segue a política de tratamento de erros de dados de saída configurada no nível do trabalho.

Pontos de verificação do log Delta

O trabalho de Análise de Fluxos cria checkpoints de registo Delta periodicamente no formato V1. Os checkpoints de log Delta são snapshots da tabela Delta e normalmente contêm o nome do ficheiro de dados gerado pelo trabalho do Stream Analytics. Se o número de arquivos de dados for grande, isso levará a grandes pontos de verificação, o que pode causar problemas de memória no trabalho do Stream Analytics.

Limitações

  • Não há suporte para chave de partição dinâmica (especificando o nome de uma coluna do esquema de registro no caminho Delta).
  • Não há suporte para várias colunas de partição. Se desejar várias colunas de partição, recomendamos que você use uma chave composta na consulta e, em seguida, especifique-a como a coluna de partição.
    • Uma chave composta pode ser criada na consulta. Um exemplo é "SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]".
  • Escrever no Delta Lake é somente adicionar novos dados.
  • A verificação de esquema no teste de consulta não está disponível.
  • A compactação de arquivos pequenos não é executada pelo Stream Analytics.
  • Todos os arquivos de dados são criados sem compressão.
  • Os tipos Date e Decimal não são suportados.
  • A gravação em tabelas existentes do Writer Versão 7 ou superior com recursos de gravador falha.
  • Quando um trabalho de Stream Analytics escreve um lote de dados num Delta Lake, pode gerar múltiplas ações Add File. Quando há muitas ações Adicionar Ficheiro geradas para um único lote, um trabalho de Stream Analytics pode ficar bloqueado.
    • O número de ações Adicionar arquivo geradas é determinado por muitos fatores:
    • Para reduzir o número de ações de Adicionar Arquivo geradas para um lote:
      • Reduza as configurações de batch Linhas Mínimas e Tempo Máximo.
      • Reduza a cardinalidade dos valores da coluna de partição ajustando os dados de entrada ou escolhendo uma coluna de partição diferente.
  • Os trabalhos do Stream Analytics só podem ler e gravar pontos de verificação V1 de uma única parte. Os pontos de verificação com várias partes e o formato V2 do ponto de verificação não são suportados.