Partilhar 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. Ajuda a evitar a afinação manual, que normalmente exige tentativa e erro repetidos. O Autotune utiliza dados históricos de execução das suas cargas de trabalho para descobrir iterativamente e aplicar definições eficazes para cada carga de trabalho.

Observação

A afinação de consultas do Autotune no Microsoft Fabric está atualmente em prévia. Está disponível em todas as regiões de produção, mas está desativado por defeito. Ative-o numa configuração Spark de ambiente, ou para uma única sessão em notebook ou código de definição de trabalho Spark.

Padrões de configuração e requisitos

  • Comportamento padrão: O Autotune está desligado por defeito.
  • Não é necessário configurar quando está desligado: Se não ativares o autotune, o Spark usa o seu comportamento de configuração padrão.
  • Configuração necessária para usar autotune: Definir spark.ms.autotune.enabled=true um:

Ajuste de consultas

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

  • spark.sql.shuffle.partitions: Define o número de partições para redistribuição de dados durante junções ou agregações. A predefinição é 200.
  • spark.sql.autoBroadcastJoinThreshold: Define o tamanho máximo da tabela, em bytes, a transmitir para nós de trabalho durante uma junção. A predefinição é 10 MB.
  • spark.sql.files.maxPartitionBytes: Define o número máximo de bytes para empacotar numa única partição ao ler ficheiros. Aplica-se a fontes de ficheiros Parquet, JSON e ORC. A predefinição é 128 MB.

O ajuste de consultas com Autotune examina cada consulta e constrói um modelo de aprendizagem automática separado para essa consulta. Funciona melhor para:

  • Consultas repetitivas
  • Consultas de longa duração (mais de 15 segundos)
  • Consultas à API SQL do Apache Spark (não à API RDD)

Podes usar autotune com notebooks, definições de trabalhos Spark e pipelines. O benefício varia consoante a complexidade da consulta e a forma dos dados. Nos testes, os maiores ganhos surgem em padrões de análise exploratória de dados, como leituras, junções, agregações e ordenações.

Captura de ecrã do tempo de execução com autotune ativado.

Como funciona o autotune

O Autotune utiliza um ciclo iterativo de otimização:

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

Com o tempo, a linha de base desloca-se para melhores definições, reduzindo o risco de regressão. Utilizar todos os pontos de dados recolhidos também ajuda a reduzir o efeito das anomalias.

Ativar o autotune

O Autotune está disponível em todas as regiões de produção, mas está desativado por defeito. Para a ativar ao nível ambiental, coloque a propriedade spark.ms.autotune.enabled=true Spark num ambiente novo ou existente. Todos os cadernos e trabalhos que usam esse ambiente herdam a configuração.

Captura de ecrã a mostrar a ativação do autotune.

O Autotune inclui deteção de regressão incorporada. Por exemplo, se uma consulta processar uma quantidade invulgarmente grande de dados, o autotune pode automaticamente saltar a afinação dessa execução. Em muitos cenários, o AutoTune precisa de cerca de 20 a 25 iterações para convergir em definições fortes.

Observação

O Autotune é compatível com o Runtime 1.2. Não podes ativar isso em versões de runtime posteriores à 1.2. Não funciona quando o modo de alta concorrência ou o endpoint privado estão ativados. O Autotune funciona com autoscaling em qualquer configuração deste.

Também pode ativar o autotune para uma única sessão definindo a propriedade Spark no bloco de notas ou na Definição da Tarefa Spark.

Ativar o autotune para uma única sessão

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

Desative o autotune para uma única sessão

Para desativar o autotune num caderno ou numa Definição de Tarefa Spark, execute um dos seguintes comandos na primeira célula ou linha de código.

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

Caso prático

Quando executas uma consulta Apache Spark, o autotune constrói um modelo para essa forma de consulta e aprende as melhores definições ao longo do tempo. Por exemplo, comece com esta consulta de filtro:

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

O Autotune aprende desta execução. Se mais tarde alterar apenas o valor do filtro, a forma da consulta mantém-se semelhante:

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

O Autotune pode reutilizar aprendizagens anteriores para este padrão de consulta semelhante, o que ajuda a manter o desempenho sem ajustes manuais.

Registos

Para cada consulta, o autotune calcula os valores recomendados para as três configurações Spark suportadas. Para inspecionar as recomendações, verifique os registos do driver para entradas que comecem com [Autotune].

Captura de ecrã dos logs do autotune dentro do Hub de Monitorização.

Os estados comuns dos registos incluem:

Situação Descrição
AUTOTUNE_DISABLED Ignorado. O Autotune está desativado, por isso a recolha e otimização de telemetria não são aplicadas.
QUERY_TUNING_DISABLED Ignorado. A otimização de consultas está desativada.
QUERY_PATTERN_NOT_MATCH Ignorado. O padrão de consulta não corresponde aos tipos de consulta suportados apenas para leitura.
QUERY_DURATION_TOO_SHORT Ignorado. A consulta durou menos de 15 segundos, o que é demasiado curto para uma afinação eficaz.
QUERY_TUNING_SUCCEED Sucesso. A afinação de consultas concluída e as definições otimizadas do Spark foram aplicadas.

Nota de transparência

Em conformidade com o Responsible AI Standard, esta secção explica como o autotune é utilizado e validado.

Finalidade do autotune

O Autotune foi concebido 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 afinação manual.
  • Utiliza dados históricos de carga de trabalho para refinar iterativamente escolhas de configuração.

Validação do Auto-Tune

O autotune é sujeito a uma validação extensa para ajudar a garantir a eficácia e a segurança:

  • Utiliza testes rigorosos em diversas cargas de trabalho Spark para verificar a eficácia dos algoritmos de afinação.
  • Comparações com os métodos padrão de otimização do Spark para demonstrar benefícios de desempenho.
  • Inclui estudos de caso reais para demonstrar valor prático.
  • Segue rigorosos padrões de segurança e privacidade para proteger os dados dos utilizadores.

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