Saídas do Azure Stream Analytics

Um trabalho do Azure Stream Analytics consiste em uma entrada, uma consulta e uma saída. Há vários tipos de saída para as quais você pode enviar dados transformados. Este artigo lista as saídas do Stream Analytics com suporte. Quando você criar sua consulta do Stream Analytics, consulte o nome de 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 (caso precise delas) adicionando várias cláusulas INTO na consulta.

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

Observação

Recomendamos enfaticamente que você use as ferramentas 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 isso não será aprimorado no futuro.

Alguns tipos de saída dão suporte ao particionamento, conforme mostrado na tabela a seguir.

Todas as saídas dão suporte ao envio em lote, mas apenas algumas dão suporte à definição de tamanhos de lote explicitamente. Para obter mais informações, consulte a seção de tamanhos de lote de saída.

Tipo de saída Particionamento Segurança
Azure Data Explorer Sim Identidade Gerenciada
Azure Functions Sim Chave de acesso
Azure Synapse Analytics Sim Autenticação de usuário SQL,
identidade gerenciada
Armazenamento de Blob e Azure Data Lake Gen 2 Sim Chave de acesso,
identidade gerenciada
Azure Cosmos DB Sim Chave de acesso,
identidade gerenciada
Azure Data Lake Storage Gen 2 Sim Usuário do Microsoft Entra
Identidade Gerenciada
Hubs de eventos do Azure Sim, é necessário definir a coluna de chave de partição na configuração de saída. Chave de acesso,
identidade gerenciada
Kafka (versão prévia) Sim, é necessário definir a coluna de chave de partição na configuração de saída. Chave de acesso,
identidade gerenciada
Banco de Dados do Azure para PostgreSQL Sim Autenticação de nome de usuário e senha
Power BI Não Usuário do Microsoft Entra, Identidade Gerenciada
Filas de 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
Banco de Dados SQL do Azure Sim, opcional. Autenticação de usuário SQL,
identidade gerenciada
Armazenamento de Tabelas do Azure Sim Chave de conta

Importante

O Azure Stream Analytics usa a API de Inserção ou de Substituição por design. Essa operação substituirá uma entidade existente ou inserirá uma nova entidade se ela não existir na tabela.

Particionamento

O Stream Analytics dá suporte a partições para todas as saídas, exceto para 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 no qual você está interessado. Os artigos sobre os 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 INTO <partition count> (consulte INTO) em sua consulta, o que pode ser útil para alcançar uma topologia de trabalho desejada. Se o seu adaptador de saída não estiver particionado, a falta de dados em uma partição de entrada causa um atraso até a quantidade de tempo de chegada tardia. Nesses casos, a saída é mesclada em um único gravador, o que pode causar gargalos no pipeline. Para saber mais sobre a política de chegada tardia, consulte Considerações sobre a ordem de evento do Azure Stream Analytics.

Tamanho do lote de saída

Todas as saídas dão suporte ao envio em lote, mas apenas algumas dão suporte à definições de tamanhos de lote explicitamente. 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 grava uma mensagem por vez e usa lotes para maior eficiência. Quando a taxa de eventos de entrada e saída estiver 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 seus tipos podem ser alteradas linha por linha. Por design, os formatos Avro e Parquet não dão suporte a esquemas variáveis em um arquivo individual.

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

  • Se a alteração do esquema puder ser detectada, o arquivo de saída atual é fechado e um novo será inicializado no novo esquema. Esse tipo de divisão de arquivos retarda seriamente a saída quando as alterações de esquema ocorrem com frequência. Esse comportamento pode afetar severamente o desempenho geral do trabalho
  • Se a alteração de esquema não puder ser detectada, a linha provavelmente será rejeitada e o trabalho ficará paralisado, pois a linha não poderá ser emitida. As colunas aninhadas, ou matrizes de vários tipos, são situações que não são descobertas e podem ser rejeitadas.

Recomendamos que você considere que as saídas nos formatos Avro ou Parquet sejam fortemente tipadas, ou com um esquema definido no momento da escrita, e que as consultas direcionadas a esses formatos sejam escritas da mesma forma (com conversões explícitas e projeções para manter um esquema uniforme).

Se vários esquemas precisarem ser gerados, considere a criação de várias saídas e a divisão de registros em cada destino usando uma cláusula WHERE.

Propriedades da janela de envio em lote de saída de Parquet

Ao usar a implantação do modelo do Azure Resource Manager ou a API REST, as duas propriedades da janela de envio em 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 para dois minutos. Após esse período, o lote é gravado na saída mesmo que o requisito mínimo de linhas não seja atendido. O valor padrão é de 1 minuto, e o máximo permitido é de 2 horas. Se a saída de blobs tiver a frequência de padrão do caminho, o tempo de espera não poderá ser maior que o intervalo de tempo da partição.

  2. sizeWindow

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

Essas propriedades da janela de envio em lote são suportadas apenas pela versão da API 2017-04-01-preview ou superior. Aqui está um exemplo do conteúdo JSON para uma chamada à 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óximas etapas