Saídas do Azure Stream Analytics

Um trabalho do Azure Stream Analytics consiste em uma entrada, consulta e saída. Há vários tipos de saída para os quais você pode enviar dados transformados. Este artigo lista as saídas suportadas do Stream Analytics. Ao criar sua consulta do Stream Analytics, consulte o nome da saída usando a cláusula INTO. Você pode usar uma única saída por trabalho ou várias saídas por trabalho de streaming (se precisar delas) adicionando várias cláusulas INTO à consulta.

Para criar, editar e testar saídas de trabalho do Stream Analytics, você pode usar o portal do Azure, o Azure PowerShell, a API .NET, a API REST, o Visual Studio e o Visual Studio Code.

Nota

É altamente recomendável que você use as ferramentas do Stream Analytics para Visual Studio Code para obter a melhor experiência de desenvolvimento local. Há lacunas de recursos conhecidas nas ferramentas do Stream Analytics para Visual Studio 2019 (versão 2.6.3000.0) e ele não será melhorado no futuro.

Alguns tipos de saídas suportam particionamento, conforme mostrado na tabela a seguir.

Todas as saídas suportam o processamento em lote, mas apenas algumas suportam a definição explícita do tamanho do lote de saída. Para obter mais informações, consulte a seção Tamanhos de lote de saída.

Tipo de saída Criação de partições Segurança
Azure Data Explorer Sim Identidade Gerida
Funções do Azure Sim Chave de acesso
Azure Synapse Analytics Sim SQL user auth,
Identidade Gerenciada
Armazenamento de Blob e Azure Data Lake Gen 2 Sim Chave de acesso,
Identidade Gerenciada
BD do Cosmos para o Azure Sim Chave de acesso,
Identidade Gerenciada
Azure Data Lake Storage Gen2 Sim Identidade gerenciada do usuário
Microsoft Entra
Hubs de Eventos do Azure Sim, precisa definir a coluna de chave de partição na configuração de saída. Chave de acesso,
Identidade Gerenciada
Kafka (pré-visualização) Sim, precisa definir a coluna de chave de partição na configuração de saída. Chave de acesso,
Identidade Gerenciada
Base de Dados do Azure para PostgreSQL Sim Nome de usuário e senha auth
Power BI Não Usuário do Microsoft Entra,
Identidade gerenciada
Filas do Barramento de Serviço do Azure Sim Chave de acesso,
Identidade Gerenciada
Tópicos do Barramento de Serviço do Azure Sim Chave de acesso,
Identidade Gerenciada
Base de Dados SQL do Azure Sim, opcional. SQL user auth,
Identidade Gerenciada
Armazenamento de tabelas do Azure Sim Chave da conta

Importante

O Azure Stream Analytics usa Inserir ou Substituir API por design. Esta operação substitui uma entidade existente ou insere uma nova entidade se ela não existir na tabela.

Criação de partições

O Stream Analytics suporta partições para todas as saídas, exceto para o Power BI. Para obter mais informações sobre chaves de partição e o número de gravadores de saída, consulte o artigo para o tipo de saída específico em que você está interessado. Os artigos para tipos de saída estão vinculados na seção anterior.

Além disso, para um ajuste mais avançado das partições, o número de gravadores de saída pode ser controlado usando uma cláusula (consulte INTO) em sua consulta, o que pode ser útil para alcançar uma INTO <partition count> topologia de trabalho desejada. Se o adaptador de saída não estiver particionado, a falta de dados em uma partição de entrada causará um atraso até a quantidade de tempo de chegada tardia. Nesses casos, a saída é mesclada a um único gravador, o que pode causar gargalos em seu pipeline. Para saber mais sobre a política de chegada tardia, consulte Considerações sobre a ordem de eventos do Azure Stream Analytics.

Tamanho do lote de saída

Todas as saídas suportam lotes, mas apenas algumas suportam explicitamente o tamanho do lote. O Azure Stream Analytics usa lotes de tamanho variável para processar eventos e gravar em saídas. Normalmente, o mecanismo do Stream Analytics não escreve uma mensagem de cada vez e usa lotes para eficiência. Quando a taxa de eventos de entrada e saída é alta, o Stream Analytics usa lotes maiores. Quando a taxa de saída é baixa, ele usa lotes menores para manter a latência baixa.

Comportamento de divisão de arquivos Avro e Parquet

Uma consulta do Stream Analytics pode gerar vários esquemas para uma determinada saída. A lista de colunas projetadas e seu tipo podem ser alterados linha a linha. Por design, os formatos Avro e Parquet não suportam esquemas variáveis em um único arquivo.

Os seguintes comportamentos podem ocorrer ao direcionar um fluxo com esquemas variáveis para uma saída usando esses formatos:

  • Se a alteração de esquema puder ser detetada, o arquivo de saída atual será fechado e um novo será inicializado no novo esquema. A divisão de arquivos como tal diminui drasticamente a saída quando as alterações de esquema acontecem com frequência. Esse comportamento pode afetar gravemente o desempenho geral do trabalho
  • Se a alteração de esquema não puder ser detetada, a linha provavelmente será rejeitada e o trabalho ficará preso porque a linha não pode ser saída. Colunas aninhadas, ou matrizes de vários tipos, são situações que não são descobertas e são rejeitadas.

Recomendamos que você considere que as saídas usando o formato Avro ou Parquet sejam fortemente tipadas, ou schema-on-write, e que as consultas direcionadas a elas sejam escritas como tal (conversões e projeções explícitas para um esquema uniforme).

Se vários esquemas precisarem ser gerados, considere criar várias saídas e dividir registros em cada destino usando uma WHERE cláusula.

Propriedades da janela de lote de saída do parquet

Quando você usa a implantação de modelo do Azure Resource Manager ou a API REST, as duas propriedades da janela de lote são:

  1. timeWindow

    O tempo máximo de espera por lote. O valor deve ser uma cadeia de caracteres de Timespan. Por exemplo, 00:02:00 durante dois minutos. Após esse tempo, o lote é gravado na saída, mesmo que o requisito mínimo de linhas não seja atendido. O valor padrão é 1 minuto e o máximo permitido é 2 horas. Se a saída do blob tiver uma frequência de padrão de caminho, o tempo de espera não poderá ser maior do que o intervalo de tempo da partição.

  2. sizeWindow

    O número mínimo de linhas por lote. Para Parquet, cada lote cria um novo arquivo. O valor padrão atual é 2.000 linhas e o máximo permitido é 10.000 linhas.

Essas propriedades de janela de lote são suportadas apenas pela API versão 2017-04-01-preview ou superior. Aqui está um exemplo da carga JSON para uma chamada de API REST:

"type": "stream",
      "serialization": {
        "type": "Parquet",
        "properties": {}
      },
      "timeWindow": "00:02:00",
      "sizeWindow": "2000",
      "datasource": {
        "type": "Microsoft.Storage/Blob",
        "properties": {
          "storageAccounts" : [
          {
            "accountName": "{accountName}",
            "accountKey": "{accountKey}",
          }
          ],

Próximos passos