Otimizar a consulta com a simulação de tarefas

Uma forma de melhorar o desempenho de uma tarefa do Azure Stream Analytics (ASA) é aplicar paralelismo na consulta. Este artigo demonstra como utilizar a Simulação de Tarefas no portal do Azure e no Visual Studio Code (VS Code) para avaliar o paralelismo de consultas de uma tarefa do Stream Analytics. Aprende a visualizar uma execução de consulta com um número diferente de unidades de transmissão em fluxo e a melhorar o paralelismo de consultas com base nas sugestões de edição.

O que é uma consulta paralela?

O paralelismo de consultas divide a carga de trabalho de uma consulta ao criar vários processos (ou nós de transmissão em fluxo) e executa-a em paralelo. Reduz consideravelmente o tempo de execução geral da consulta e, por conseguinte, são necessárias menos horas de transmissão em fluxo.

Para que uma tarefa seja paralela, todas as entradas, saídas e passos de consulta têm de estar alinhados e utilizar as mesmas chaves de partição. A criação de partições lógicas de consulta é determinada pelas chaves utilizadas para agregações (GROUP BY).

Se quiser saber mais sobre a paralelização de consultas, veja Tirar partido da paralelização de consultas no Azure Stream Analytics.

Utilizar a simulação de tarefas no VS Code

A funcionalidade Simulação de tarefas simula como a tarefa estaria a executar a topologia no Azure. Neste tutorial, vai aprender a melhorar o desempenho das consultas com base em sugestões de edição e a executá-lo em paralelo. Por exemplo, estamos a utilizar uma tarefa não paralelo que utiliza os dados de entrada de um hub de eventos e envia os resultados para outro hub de eventos.

Pré-requisitos:

  • Extensão asa Tools para VS Code. Se ainda não o instalou, siga este guia para instalar.
  • Configure a entrada em direto e a saída em direto para a tarefa do Stream Analytics.
  • Tem de incluir entrada em direto e saída na consulta.

Nota

A Simulação de Tarefas não consegue simular a topologia de execução de tarefas para entradas e saídas locais. Não seriam enviados dados para o destino de saída durante a simulação.

  1. Abra o projeto ASA no VS Code. Aceda ao ficheiro de consulta *.asaql e selecione Simular tarefa para iniciar a Simulação de Tarefas.

    Captura de ecrã do simulador de diagrama de trabalho de abertura do VS Code no ficheiro de consulta.

  2. No separador Diagrama , mostra o número de nós de transmissão em fluxo alocados à tarefa e o número de partições em cada nó de transmissão em fluxo. A seguinte captura de ecrã é um exemplo de uma tarefa não paralelo em que os dados fluem entre nós.

    Captura de ecrã do VS Code a utilizar o simulador de diagrama de tarefas e a mostrar a topologia da tarefa.

  3. Uma vez que esta consulta NÃO está em paralelo, pode selecionar o separador Melhoramentos para ver sugestões sobre como melhorar a consulta.

    Captura de ecrã do VS Code a utilizar o simulador de diagrama de tarefas e a mostrar as sugestões de edição da consulta.

  4. Selecione o passo de consulta na lista de melhoramentos, verá que as linhas correspondentes estão realçadas e pode editar a consulta com base nas sugestões.

    Captura de ecrã do VS Code a utilizar o simulador de diagrama de tarefas e a realçar o passo de consulta.

    Nota

    Estas são sugestões de edição para melhorar o paralelismo de consultas. No entanto, se estiver a utilizar a função de agregação entre todas as partições, ter uma consulta paralela poderá não ser aplicável aos seus cenários.

  5. Para este exemplo, adicione o PartitionId à linha#22 e guarde a alteração. Em seguida, pode utilizar a Simulação de atualização para obter o novo diagrama.

    Captura de ecrã a mostrar o diagrama de atualização após atualizar a consulta.

  6. Também pode ajustar as Unidades de Transmissão em Fluxo para estimular a forma como os nós de transmissão em fluxo são alocados com diferentes SUs. Dá-lhe uma ideia de quantas SUs precisa para lidar com a carga de trabalho.

    Captura de ecrã a mostrar o VS Code com o ajustador SU.

Utilizar a simulação de tarefas no portal do Azure

  1. Aceda ao editor de consultas no portal do Azure e selecione Simulação de tarefas no painel inferior. Simula a tarefa de execução da topologia com base na consulta e nas unidades de transmissão em fluxo predefinidas. Uma captura de ecrã a mostrar a abertura da simulação de tarefas no portal.
  2. Selecione Melhoramentos para ver as sugestões para melhorar o paralelismo da consulta. Uma captura de ecrã mostra os melhoramentos da simulação de tarefas abertas no portal.
  3. Ajuste as unidades de transmissão em fluxo para ver quantas SUs precisava para processar a carga de trabalho. Captura de ecrã a mostrar como ajustar su no portal.

Diagrama ao nível do processador

Depois de ajustar as unidades de transmissão em fluxo para simular a topologia da sua tarefa, pode expandir qualquer um dos nós de transmissão em fluxo para observar como os seus dados estão a ser processados ao nível do processador.

Uma captura de ecrã no formato gif a mostrar o diagrama ao nível do processador do simulador.

O diagrama ao nível do processador permite-lhe:

  • observe como as partições de entrada são alocadas e processadas em cada nó de transmissão em fluxo.
  • descubra qual é a mudança de tempo para cada processador de computação.
  • forneça informações sobre se os processadores de Entrada e Saída estão alinhados em paralelo.

Para mapear o processador com o passo de consulta, selecione duas vezes no diagrama. Esta funcionalidade ajuda-o a localizar os passos de consulta que estão a agregar.

Uma captura de ecrã a mostrar a funcionalidade de mapeamento de simulação de tarefas no VS Code.

Sugestões de melhoramento

Eis as explicações para Melhoramentos:

Tipo Significado
Partição personalizada não suportada Altere a chave de partição "xxx" de entrada para "xxx".
Número de partições não correspondidas A entrada e a saída têm de ter o mesmo número de partições.
As chaves de partição não correspondem Os passos de entrada, saída e cada consulta têm de utilizar a mesma chave de partição.
Número de partições de entrada não correspondidas Todas as entradas têm de ter o mesmo número de partições.
Chaves de partição de entrada não correspondidas Todas as entradas têm de utilizar a mesma chave de partição.
Nível de compatibilidade baixo Atualize CompatibilityLevel no ficheiro JobConfig.json .
Chave de partição de saída não encontrada Tem de utilizar a chave de partição especificada para o resultado.
Partição personalizada não suportada Só pode utilizar chaves de partição predefinidas.
O passo de consulta não está a utilizar a partição A consulta não está a utilizar nenhuma cláusula PARTITION BY.

Passos seguintes

Se quiser saber mais sobre a paralelização de consultas e o diagrama de tarefas, veja estes tutoriais: