Apache Spark advisor para aconselhamento em tempo real sobre notebooks
O consultor do Apache Spark analisa comandos e códigos executados pelo Apache Spark e exibe conselhos em tempo real para execuções do Notebook. O consultor Apache Spark tem padrões integrados para ajudar os usuários a evitar erros comuns. Ele oferece recomendações para otimização de código, executa análise de erros e localiza a causa raiz das falhas.
Conselhos integrados
O Spark advisor, uma ferramenta integrada com o Impulse, fornece padrões integrados para detetar e resolver problemas em aplicativos Apache Spark. Este artigo explica alguns dos padrões incluídos na ferramenta.
Você pode abrir o painel Execuções recentes com base no tipo de conselho necessário.
Pode retornar resultados inconsistentes ao usar 'randomSplit'
Resultados inconsistentes ou imprecisos podem ser retornados ao trabalhar com o método randomSplit . Use o cache do Apache Spark (RDD) antes de usar o método randomSplit().
O método randomSplit() é equivalente a executar sample() em seu quadro de dados várias vezes. Onde cada amostra rebusca, particiona e classifica seu quadro de dados dentro de partições. A distribuição de dados entre partições e ordem de classificação é importante para randomSplit() e sample(). Se qualquer uma delas for alterada após a rebusca de dados, pode haver duplicatas ou valores ausentes entre as divisões. E a mesma amostra utilizando a mesma semente pode produzir resultados diferentes.
Essas inconsistências podem não acontecer em todas as execuções, mas para eliminá-las completamente, armazene em cache seu quadro de dados, reparticione em uma coluna ou aplique funções agregadas, como groupBy.
O nome da tabela/vista já está a ser utilizado
Já existe uma vista com o mesmo nome que a tabela criada ou já existe uma tabela com o mesmo nome que a vista criada. Quando esse nome é usado em consultas ou aplicativos, somente a exibição será retornada, independentemente de qual foi criada primeiro. Para evitar conflitos, renomeie a tabela ou a exibição.
Não é possível reconhecer uma dica
spark.sql("SELECT /*+ unknownHint */ * FROM t1")
Não é possível encontrar o(s) nome(s) de uma relação especificada
Não foi possível encontrar a(s) relação(ões) especificada(s) na dica. Verifique se a(s) relação(ões) está(ão) escrita(s) corretamente(s) e acessível(is) dentro do escopo da dica.
spark.sql("SELECT /*+ BROADCAST(unknownTable) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")
Uma dica na consulta impede que outra dica seja aplicada
A consulta selecionada contém uma dica que impede que outra dica seja aplicada.
spark.sql("SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")
Habilite 'spark.advise.divisionExprConvertRule.enable' para reduzir a propagação de erros de arredondamento
Esta consulta contém a expressão com tipo Duplo. Recomendamos que você habilite a configuração 'spark.advise.divisionExprConvertRule.enable', que pode ajudar a reduzir as expressões de divisão e a propagação de erros de arredondamento.
"t.a/t.b/t.c" convert into "t.a/(t.b * t.c)"
Habilite 'spark.advise.nonEqJoinConvertRule.enable' para melhorar o desempenho da consulta
Esta consulta contém uma junção demorada devido à condição "Ou" dentro da consulta. Recomendamos que você habilite a configuração 'spark.advise.nonEqJoinConvertRule.enable', que pode ajudar a converter a junção acionada pela condição "Or" para SMJ ou BHJ para acelerar essa consulta.
Experiência de utilizador
O consultor Apache Spark exibe os conselhos, incluindo informações, avisos e erros, na saída da célula do Notebook em tempo real.
Informação
Advertência
Erro
Configuração do Spark Advisor
A configuração do Spark advisor permite que você escolha se deseja mostrar ou ocultar tipos específicos de conselhos do Spark de acordo com suas necessidades. Além disso, você tem a flexibilidade de habilitar ou desabilitar o Spark Advisor para seus blocos de anotações em um espaço de trabalho, com base em suas preferências.
Você pode acessar as configurações do Spark Advisor no nível do Bloco de Anotações de Malha para aproveitar seus benefícios e garantir uma experiência produtiva de criação de blocos de anotações.