Análise de consultas e solução de problemas com o Snowpark Scala

Este tópico fornece algumas orientações sobre a análise de consultas e a solução de problemas ao trabalhar com a biblioteca do Snowpark.

Neste tópico:

Como visualizar o plano de execução de uma consulta no Snowpark

Para inspecionar o plano de avaliação de um DataFrame, chame o método explain do DataFrame. Isso imprime as instruções SQL usadas para avaliar o DataFrame. Se houver apenas uma instrução SQL, o método também imprime o plano lógico para a instrução.

----------DATAFRAME EXECUTION PLAN----------
Query List:
0.
SELECT
  "_1" AS "col %",
  "_2" AS "col *"
FROM
  (
    SELECT
      *
    FROM
      (
        VALUES
          (1 :: int, 2 :: int),
          (3 :: int, 4 :: int) AS SN_TEMP_OBJECT_639016133("_1", "_2")
      )
  )
Logical Execution Plan:
 GlobalStats:
    partitionsTotal=0
    partitionsAssigned=0
    bytesAssigned=0
Operations:
1:0     ->Result  SN_TEMP_OBJECT_639016133.COLUMN1, SN_TEMP_OBJECT_639016133.COLUMN2
1:1          ->ValuesClause  (1, 2), (3, 4)

--------------------------------------------
Copy

Após a execução de um DataFrame ter sido acionada, você pode verificar o progresso da consulta na página History History tab na Classic Console.

Na coluna Query Tag, você pode encontrar o nome da função e o número da linha em seu código que acionou essa consulta.

Snowpark request in the History page in the Classic Console

Solução de problemas

Como mudar as configurações de registro em log

Por padrão, a biblioteca do Snowpark registra em log mensagens de nível INFO para o stdout. Para alterar as configurações de registro em log, crie um arquivo simplelogger.properties e configure as propriedades do agente de log nesse arquivo. Por exemplo, para definir o nível de log como DEBUG:

# simplelogger.properties file (a text file)
# Set the default log level for the SimpleLogger to DEBUG.
org.slf4j.simpleLogger.defaultLogLevel=debug
Copy

Coloque esse arquivo no seu classpath. Se você estiver usando um layout de diretório do Maven, coloque o arquivo no diretório src/main/resources/.

Exceções java.lang.OutOfMemoryError

Se uma exceção java.lang.OutOfMemoryError for gerada, aumente o tamanho máximo da pilha da JVM.

Se você estiver usando a REPL do Scala e precisar aumentar o tamanho máximo da pilha, edite o script do shell run.sh (fornecido no arquivo morto) e adicione o sinalizador -J-Xmxmaximum_size ao comando scala. O exemplo a seguir aumenta o tamanho máximo da pilha para 4 GB:

scala -J-Xmx4G ...
Copy