Azure Stream Analytics: gravar em uma tabela do Delta Lake

O Delta Lake é um formato aberto que oferece confiabilidade, qualidade e desempenho aos data lakes. Você pode usar o Azure Stream Analytics para gravar dados de streaming diretamente nas tabelas do Delta Lake, sem escrever uma única linha de código.

Um trabalho do Stream Analytics pode ser configurado para gravar por meio de um conector de saída nativo do Delta Lake, seja em uma tabela do Delta nova ou pré-criada em uma conta do Azure Data Lake Storage Gen2. Esse conector é otimizado para ingestão de alta velocidade para tabelas do Delta no modo Acréscimo. Ele também fornece semântica do tipo "exatamente uma vez", que garante que nenhum dado seja perdido ou duplicado. A ingestão de fluxos de dados em tempo real dos Hubs de Eventos do Azure em tabelas do 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 a seguir 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 na tabela do delta lake no contêiner especificado. Ele inclui o nome da tabela. Veja mais informações na próxima seção.
Coluna de partição Opcional. O nome {field} de seus 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 string.

Para ver a lista completa da configuração do Data Lake Storage Gen2, confira a visão geral do Azure Data Lake Storage Gen2.

Nome do caminho delta

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

Você usar um ou mais segmentos de caminho para definir o caminho para a tabela do Delta e o nome da tabela do 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.

As restrições no nome do caminho do Delta incluem:

  • Os 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 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 para um nome de caminho do 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 é WestEurope/CA/factory1 e o nome da pasta da tabela do Delta é device-table.
  2. No contêiner escolhido, o caminho do diretório é Test e o nome da pasta da tabela do Delta é demo.
  3. No contêiner escolhido, o nome da pasta da tabela do Delta é mytable.

Criar uma tabela

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

Gravar na tabela

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

Entrega exatamente uma vez

O arquivo de alterações permite que o Delta Lake garanta o processamento exatamente uma vez. O Stream Analytics também fornece a entrega exatamente uma vez dos dados de saída para o 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 for gravada em uma nova tabela do 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 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 do Delta e o esquema de um registro do trabalho transmitido, 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 segue a política de tratamento de erro de dados de saída configurada no nível do trabalho.

Pontos de verificação do log do Delta

O trabalho do Stream Analytics cria pontos de verificação de log do Delta periodicamente no formato V1. Os pontos de verificação do log do Delta são instantâneos da tabela do Delta e normalmente contêm o nome do arquivo de dados gerado pelo trabalho do Stream Analytics. Se a quantidade de arquivos de dados for grande, isso resultará em grandes pontos de verificação, o que poderá 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 do Delta).
  • Não há suporte para várias colunas de partição. Se você precisa de várias colunas de partição, recomendamos que você use uma chave composta na consulta e 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]".
  • 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, o trabalho do Stream Analytics pode ficar travado.
  • Os trabalhos do Stream Analytics só podem ler e gravar pontos de verificação V1 de uma parte. Não há suporte para pontos de verificação de várias partes e o formato de ponto de verificação V2.