Snowparkを使用したクエリの分析とトラブルシューティング

このトピックでは、Snowparkライブラリを使用する際のクエリの分析と、問題のトラブルシューティングに関するガイドラインをいくつか提供します。

このトピックの内容:

Snowparkにおけるクエリの実行プランの表示

DataFrame の評価計画を調べるには、 DataFrame の explain メソッドを呼び出します。これにより、 DataFrame の評価に使用される SQL ステートメントが出力されます。SQL ステートメントが1つしかない場合、メソッドはステートメントの論理プランも出力します。

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

--------------------------------------------

DataFrame の実行がトリガーされた後、Snowflakeウェブインターフェイスの History History tab ページでクエリの進行状況を確認できます。

Query Tag 列には、このクエリをトリガーしたコード内の関数の名前と行番号が表示されます。

Snowpark request in the History page in the Snowflake web interface

トラブルシューティング

ログ設定の変更

デフォルトでは、Snowparkライブラリは INFO レベルのメッセージをstdoutに記録します。これらのログ設定の変更は、プログラムまたはプロパティファイルで変更できます。

プログラムでログレベルを変更するには、 org.apache.log4j.Logger.getLogger("com.snowflake.snowpark") を呼び出してライブラリの Logger オブジェクトを取得してから、 Logger.setLevel を呼び出してレベルを サポートされているレベル の1つに変更します。例:

import org.apache.log4j.{Level, Logger}
...
Logger.getLogger("com.snowflake.snowpark").setLevel(Level.DEBUG)

別の方法として、プロパティファイルでレベルを指定する場合は、 log4j.properties ファイルを作成し、独自のロガーを構成して、そのファイルにそのプロパティを設定します。例:

# log4j.properties file (a text file)
log4j.rootLogger=DEBUG, STDOUT
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%t] %5p (%F:%L) - %m%n

このファイルをクラスパスに配置します。Mavenディレクトリレイアウトを使用している場合は、ファイルを src/main/resources/ ディレクトリに配置します。

java.lang.OutOfMemoryError の例外

java.lang.OutOfMemoryError の例外がスローされた場合は、 JVM の最大ヒープサイズを増やします。

Scala REPL を使用していて、最大ヒープサイズを増やす必要がある場合は、 run.sh シェルスクリプト(アーカイブファイルで提供)を編集し、 -J-Xmx最大サイズ フラグを scala コマンドに追加します。次の例では、最大ヒープサイズを4 GB に増やします。

scala -J-Xmx4G ...