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)

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

DataFrame の実行がトリガーされた後、 Classic Console の History 履歴タブ ページでクエリの進行状況を確認できます。

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

従来のコンソール内における履歴ページでのSnowparkリクエスト

トラブルシューティング

ログ設定の変更

デフォルトでは、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
Copy

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

java.lang.OutOfMemoryError の例外

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

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

scala -J-Xmx4G ...
Copy