Partilhar via


Azure Stream Analytics: Gravar em uma tabela Delta Lake

O Delta Lake é um formato aberto que traz confiabilidade, qualidade e desempenho aos data lakes. Você pode usar o Azure Stream Analytics para gravar diretamente dados de streaming em suas tabelas 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 Delta Lake nativo, em uma tabela Delta nova ou pré-criada em uma 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. A ingestão de fluxos de dados em tempo real dos Hubs de Eventos do Azure em tabelas Delta permite que você execute análises ad hoc, interativas ou em lote.

Configuração do Delta Lake

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

Property name Description
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 se Delta Lake for selecionado.
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 {field} nome dos dados de saída para a partição. Apenas uma coluna de partição é suportada. O valor da coluna deve ser do string tipo.

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

Nome do caminho delta

O nome do caminho Delta é usado para especificar o local e o nome da 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 /) 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 sobre o nome do caminho Delta incluem:

  • Os nomes de campo não diferenciam maiúsculas de 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 exata uma vez

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

Imposição de esquemas

A imposição de esquema significa que todas as novas gravações em uma tabela são impostas para serem compatíveis com o esquema da tabela de destino em 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 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 registro do trabalho de streaming, ele será considerado uma instância 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 de log delta

O trabalho do Stream Analytics cria pontos de verificação de log Delta periodicamente no formato V1. Os pontos de verificação de 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 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 para Delta Lake é apenas anexar.
  • 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 Data 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 do Stream Analytics grava um lote de dados em um Delta Lake, ele pode gerar várias ações Adicionar arquivo. Quando há muitas ações Adicionar arquivo geradas para um único lote, um trabalho do Stream Analytics pode ficar preso.
    • O número de ações Adicionar arquivo geradas é determinado por muitos fatores:
    • Para reduzir o número de ações Adicionar arquivo geradas para um lote:
      • Reduza as configurações de lote 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.