Azure Stream Analytics – Gravação na tabela Delta Lake

O Delta Lake é um formato aberto que oferece confiabilidade, qualidade e desempenho aos data lakes. O Azure Stream Analytics permite gravar dados de streaming diretamente nas tabelas delta lake, sem gravar uma única linha de código.

Um trabalho de análise de fluxo pode ser configurado para gravar por meio de um conector de saída delta lake nativo, seja em uma tabela Delta nova ou pré-criada em uma conta do Azure Data Lake Storage Gen2. Esse conector é otimizado para ingestão de alta velocidade em tabelas delta no modo de acréscimo e também fornece semântica exatamente uma vez, o que garante que os dados não sejam perdidos nem duplicados. A ingestão de fluxos de dados em tempo real dos Hubs de Eventos do Azure em tabelas Delta permite que você execute a análise em lote ou interativa ad hoc.

Configuração do Delta Lake

Para gravar dados no Delta Lake, você precisa se conectar a uma conta Azure Data Lake Storage Gen2. A tabela abaixo lista as propriedades relacionadas à configuração do Delta Lake.

Nome da propriedade Descrição
Formato de serialização do evento Formato de serialização para dados de saída. Há suporte para JSON, CSV, AVRO e Parquet. O Delta Lake está listado como opção. Os dados estão no formato Parquet se Delta Lake estiver selecionado.
Nome do caminho delta O caminho que é usado para gravar a tabela delta lake no contêiner especificado. Ele inclui o nome da tabela. Mais detalhes estão na próxima seção.
Coluna de Partição Opcional. O nome {field} dos dados de saída para a partição. Há suporte apenas para uma coluna de partição. O valor da coluna deve ser do tipo de cadeia de caracteres

Para ver a lista completa da configuração do ADLS Gen2, confira a Visão Geral do ALDS Gen2.

Nome do Caminho Delta

O Nome do Caminho Delta é usado para especificar o local e o nome da tabela Delta Lake armazenada no Azure Data Lake Storage Gen2.

Você pode optar por 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 '/' /) que correspondem ao nome de um diretório virtual.

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

O nome do Caminho Delta inclui as seguintes restrições:

  • Nomes de campo não diferenciam maiúsculas de minúsculas. Por exemplo, o serviço não pode diferenciar entre a coluna ID e a coluna id.
  • Nenhum nome {field} dinâmico é permitido. Por exemplo, {ID} é tratado como texto {ID}.
  • O número de segmentos de caminho que incluem o nome não pode exceder 254.

Exemplos

Exemplos para nome do caminho Delta:

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

Exemplo de arquivos de saída:

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

Como 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 Azure Stream Analytics criará uma nova Tabela Delta. Essa nova tabela será criada com a seguinte configuração:

Como gravar na tabela

Se já houver uma tabela Delta Lake com o mesmo nome e no local especificado pelo nome do Caminho Delta, por padrão, o Azure Stream Analytics gravará 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 Azure Stream Analytics também fornece a entrega exatamente uma vez dos dados de saída para o Azure Data Lake Storage Gen2 durante uma única execução de trabalho.

Imposição de esquema

A imposição de esquema significa que se impõe que todas as novas gravações em uma tabela sejam compatíveis com o esquema da tabela de destino no tempo de 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 estiver sendo gravada em uma nova tabela delta, o esquema de 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 essa coluna. Se estiver faltando uma coluna nos dados de entrada em comparação com o esquema de tabela existente, eles serão gravados na tabela com essa coluna nula.

Se não houver nenhuma interseção entre o esquema da tabela delta e o esquema de um registro do trabalho de streaming, isso será considerado uma instância de falha de conversão de esquema. Esse não é o único caso que seria considerado falha de conversão de esquema.

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

Pontos de verificação do Log Delta

O trabalho do Stream Analytics cria pontos de verificação do Log Delta periodicamente no formato V1. Os pontos de verificação do Log Delta são instantâneos da Tabela Delta e normalmente contêm o nome do arquivo de dados gerado pelo trabalho do Stream Analytics. Se o número de arquivos de dados for grande, isso resultará em 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 a 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 várias colunas de partição forem desejadas, a recomendação é usar uma chave composta na consulta e especificá-la como a coluna de partição.
    • Uma chave composta pode ser criada na consulta, por exemplo: "SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]".
  • A gravação no Delta Lake é somente acréscimo.
  • 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 serão criados sem compactação.
  • Não há suporte para os tipos Data e Decimal.
  • A gravação em tabelas existentes do Gravador Versão 7 ou superior com recursos de gravador falhará.
  • Quando um trabalho do Stream Analytics grava um lote de dados em um Delta Lake, ele pode gerar várias Ações de Adição de Arquivo. Quando há muitas Ações de Adição de Arquivo geradas para um único lote, um trabalho do Stream Analytics pode ficar travado.
  • Os trabalhos do Stream Analytics só podem ler e gravar pontos de verificação de parte única V1. Não há suporte para pontos de verificação de várias partes e o formato de Ponto de Verificação V2.

Próximas etapas