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)
--------------------------------------------
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 の最大ヒープサイズを増やします(例: -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"