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:
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.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}",
}
],