Snowpark Javaを使用したクエリの分析とトラブルシューティング¶
このトピックでは、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 の実行がトリガーされた後、 Classic Console の History ページでクエリの進行状況を確認できます。
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 の最大ヒープサイズを増やします(例: -J-Xmxmaximum_size
フラグを介して)。
Java 17の名前のないモジュールエラー¶
Java 17でSnowpark JavaまたはScalaクライアントを実行すると、次のようなエラーが表示されることがあります。
java.base does not "opens java.nio" to unnamed module
これは、Snowparkが Apache Arrowコネクタ を使用しており、Java 9以降のデフォルトでは公開されていない内部Java APIs に依存しているためです。
このエラーを回避するには、アプリケーションの実行時にコマンドライン引数として、またはシステムの環境変数で、次のパラメーターを設定します。
--add-opens=java.base/java.nio=ALL-UNNAMED
注釈
Snowpark API は、次のJavaのバージョンをサポートしています。
11.x
17.x(この機能のプレビューサポートは、すべてのアカウントで利用可能。)
アプリケーション実行時の引数の設定¶
この引数は、アプリケーションの実行時にコマンドラインから設定できます。
たとえば、 java
コマンドを呼び出すときに、次のように --add-opens=java.base/java.nio=ALL-UNNAMED
を追加することができます。
java --add-opens=java.base/java.nio=ALL-UNNAMED -jar my-snowpark-app.jar.
RSA 秘密キー認証も使用している場合は、次の例のように sun.security.util
も許可する必要があります。
java --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED -jar my-snowpark-app.jar
環境変数としてのパラメーターの設定¶
パラメーターはシステムの環境変数で設定できます。環境変数の設定方法については、オペレーティングシステムの手順をご参照ください。
以下のUnixベースの例のように、 JDK_JAVA_OPTIONS
環境変数を作成または更新します。
export JDK_JAVA_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED"
RSA 秘密キー認証も使用している場合は、次の例のように sun.security.util
も許可する必要があります。
export JDK_JAVA_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED"