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.

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

After the execution of a DataFrame has been triggered, you can check on the progress of the query in the Query History page in Snowsight.

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

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