使用 Snowpark Scala 时分析查询和排除故障

本主题提供了一些有关在使用 Snowpark 库时分析查询和故障排除的指引。

在 Snowpark 中查看查询的执行计划

要检查 DataFrame 的计算计划,请调用 DataFrame 的 explain 方法。此方法会打印用于计算 DataFrame 的 SQL 语句。如果只有一个 SQL 语句,此方法还会打印该语句的逻辑计划。

----------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.

Query Tag 列中,可以在触发此查询的代码中找到函数名称和行号。

Classic Console 中的 History 页面中的 Snowpark 请求

故障排除

更改日志记录设置

默认情况下,Snowpark 库会将 INFO 级别的消息记录到标准输出。若要更改日志记录设置,请创建一个 simplelogger.properties 文件,并在该文件中配置记录器属性。例如,将日志级别设置为 DEBUG

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

将此文件放在类路径中。如果您使用的是 Maven 目录布局,请将此文件放在 src/main/resources/ 目录中。

java.lang. OutOfMemoryError 异常

如果引发 java.lang.OutOfMemoryError 异常,请为 JVM 增加最大堆大小。

如果您使用的是 Scala REPL,并且需要增加最大堆大小,请编辑 run.sh shell 脚本(在归档文件中提供),并将 -J-Xmxmaximum_size 标志添加到 scala 命令中。以下示例将最大堆大小增加到 4 GB:

scala -J-Xmx4G ...
Copy
语言: 中文