Compartilhar via


O que é o Autotune para configurações do Apache Spark no Fabric?

O Autotune ajusta automaticamente as configurações do Apache Spark para reduzir o tempo de execução da carga de trabalho e melhorar o desempenho. Ele ajuda você a evitar o ajuste manual, o que normalmente requer avaliação e erro repetidos. O Autotune usa dados de execução históricos de suas cargas de trabalho para descobrir e aplicar configurações efetivas de forma iterativa para cada carga de trabalho.

Observação

O ajuste de consultas do Autotune no Microsoft Fabric está atualmente em versão prévia. Ele está disponível em todas as regiões de produção, mas está desabilitado por padrão. Habilite-o em uma configuração do Spark de ambiente ou para uma única sessão no notebook ou no código de Definição de Tarefa do Spark.

Padrões e requisitos de configuração

  • Comportamento padrão: o Autotune está desativado por padrão.
  • Nenhuma configuração necessária quando desativada: se você não habilitar o autotune, o Spark usará seu comportamento de configuração padrão.
  • Configuração necessária para usar o autotune: defina spark.ms.autotune.enabled=true :

Ajuste de consulta

O Autotune ajusta estas três configurações do Apache Spark para cada consulta:

  • spark.sql.shuffle.partitions: Define o número de partições para embaralhamento de dados durante junções ou agregações. O padrão é 200.
  • spark.sql.autoBroadcastJoinThreshold: define o tamanho máximo da tabela, em bytes, para transmissão aos nós de trabalho durante uma junção. O padrão é 10 MB.
  • spark.sql.files.maxPartitionBytes: define o máximo de bytes a serem empacotados em uma partição ao ler arquivos. Aplica-se a fontes de arquivo Parquet, JSON e ORC. O padrão é 128 MB.

O ajuste de consulta do Autotune examina cada consulta e cria um modelo de machine learning separado para essa consulta. Ele funciona melhor para:

  • Consultas repetitivas
  • Consultas com execução prolongada (mais de 15 segundos)
  • Consultas da API SQL do Apache Spark (não a API RDD)

Você pode usar o autotune com notebooks, definições de trabalho do Spark e pipelines. O benefício varia de acordo com a complexidade da consulta e a forma de dados. No teste, os maiores ganhos aparecem em padrões exploratórios de análise de dados, como leituras, junções, agregações e classificações.

Captura de tela do tempo de execução com o autotune habilitado.

Como funciona o autotune

O Autotune usa um loop de otimização iterativa:

  1. Comece com os valores de configuração padrão do Spark.
  2. Gerar configurações de candidato em torno de uma linha de base (centroid).
  3. Preveja o melhor candidato usando um modelo treinado em execuções anteriores.
  4. Aplique o candidato e execute a consulta.
  5. Incorpore os resultados de execução de volta ao modelo.

Com o tempo, a linha de base muda para melhores configurações, reduzindo o risco de regressão. O uso de todos os pontos de dados coletados também ajuda a reduzir o efeito de anomalias.

Habilitar o autotune

O Autotune está disponível em todas as regiões de produção, mas está desabilitado por padrão. Para habilitá-lo no nível do ambiente, defina a propriedade spark.ms.autotune.enabled=true Spark em um ambiente novo ou existente. Todos os notebooks e trabalhos que usam esse ambiente herdam a configuração.

Captura de tela da habilitação do Autotune.

O Autotune inclui uma detecção interna de regressão. Por exemplo, se uma consulta processar uma quantidade extraordinariamente grande de dados, o autotune poderá ignorar automaticamente o ajuste para essa execução. Em muitos cenários, o autotune precisa de cerca de 20 a 25 iterações para convergir em configurações fortes.

Observação

O Autotune é compatível com o Runtime 1.2. Não é possível habilitá-lo em versões de runtime posteriores à 1.2. Ele não é executado quando o modo de alta simultaneidade ou o ponto de extremidade privado está habilitado. Autotune funciona com dimensionamento automático em qualquer configuração de dimensionamento automático.

Você também pode habilitar o autotune para uma única sessão definindo a propriedade Spark em seu bloco de anotações ou definição de trabalho do Spark.

Habilitar o autotune para uma única sessão

%%sql
SET spark.ms.autotune.enabled=TRUE

Desabilitar o autotune para uma única sessão

Para desabilitar o autotune em um notebook ou definição de trabalho do Spark, execute um dos seguintes comandos como a primeira célula ou a primeira linha de código.

%%sql 
SET spark.ms.autotune.enabled=FALSE 

Estudo de caso

Quando você executa uma consulta do Apache Spark, o autotune cria um modelo para essa forma de consulta e aprende as melhores configurações ao longo do tempo. Por exemplo, comece com esta consulta de filtro:

%%pyspark
df.filter(df.country == "country-A")

O Autotune aprende com essa execução. Se posteriormente você alterar apenas o valor do filtro, a forma de consulta permanecerá semelhante:

%%pyspark
df.filter(df.country == "country-B")

O Autotune pode reutilizar aprendizados anteriores para esse padrão de consulta semelhante, o que ajuda a manter o desempenho sem ajuste manual.

Registros

Para cada consulta, o autotune calcula os valores recomendados para as três configurações do Spark com suporte. Para inspecionar as recomendações, verifique os logs do driver em busca de entradas que começam com [Autotune].

Captura de tela dos logs de ajuste automático dentro do Monitoring Hub.

Os status de log comuns incluem:

Situação Descrição
AUTOTUNE_DISABLED Ignorado. O Autotune está desabilitado, portanto, a coleta e a otimização de telemetria não são aplicadas.
QUERY_TUNING_DISABLED Ignorado. O ajuste de consulta está desabilitado.
QUERY_PATTERN_NOT_MATCH Ignorado. O padrão de consulta não corresponde aos tipos com suporte de consulta somente leitura.
QUERY_DURATION_TOO_SHORT Ignorado. A consulta foi executada por menos de 15 segundos, sendo tempo insuficiente para ajuste efetivo.
QUERY_TUNING_SUCCEED Êxito. Ajuste de consulta concluído e configurações otimizadas do Spark foram aplicadas.

Observação de transparência

Em alinhamento com o Padrão de IA Responsável, esta seção explica como o autotune é usado e validado.

Finalidade do autotune

O Autotune foi projetado para melhorar a eficiência da carga de trabalho do Apache Spark para profissionais de dados. Isso:

  • Ajusta automaticamente as configurações do Apache Spark para reduzir o tempo de execução.
  • Reduz o esforço de ajuste manual.
  • Usa dados históricos de carga de trabalho para refinar iterativamente as opções de configuração.

Validação do Auto-Tune

O Autotune passa por uma ampla validação para ajudar a garantir a eficácia e a segurança:

  • Usa testes rigorosos em diversas cargas de trabalho do Spark para verificar a eficácia do algoritmo de ajuste.
  • Parâmetros de comparação em relação aos métodos de otimização padrão do Spark para demonstrar benefícios de desempenho.
  • Inclui estudos de caso do mundo real para mostrar valor prático.
  • Segue padrões estritos de segurança e privacidade para proteger os dados do usuário.

Os dados do usuário são usados exclusivamente para aprimorar o desempenho da carga de trabalho, com proteções robustas que evitam o uso indevido ou a exposição de informações confidenciais.