Snowpark Scalaを使用したクエリの分析とトラブルシューティング¶
このトピックでは、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)
--------------------------------------------
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 列には、このクエリをトリガーしたコード内の関数の名前と行番号が表示されます。
トラブルシューティング¶
ログ設定の変更¶
デフォルトでは、Snowparkライブラリは INFO レベルのメッセージをstdoutにログします。ログ設定を変更するには、 simplelogger.properties ファイルを作成し、そのファイルでロガーのプロパティを構成します。たとえば、ログレベルを DEBUG に設定するには、次のようにします。
# simplelogger.properties file (a text file)
# Set the default log level for the SimpleLogger to DEBUG.
org.slf4j.simpleLogger.defaultLogLevel=debug
このファイルをクラスパスに配置します。Mavenディレクトリレイアウトを使用している場合は、ファイルを src/main/resources/ ディレクトリに配置します。
java.lang.OutOfMemoryError の例外¶
java.lang.OutOfMemoryError の例外がスローされた場合は、 JVM の最大ヒープサイズを増やします。
Scala REPL を使用していて、最大ヒープサイズを増やす必要がある場合は、 run.sh シェルスクリプト(アーカイブファイルで提供)を編集し、 -J-Xmxmaximum_size フラグを scala コマンドに追加します。次の例では、最大ヒープサイズを4 GB に増やします。
scala -J-Xmx4G ...