Snowpark Javaを使用したクエリの分析とトラブルシューティング¶
このトピックでは、Snowparkライブラリを使用する際のクエリの分析と、問題のトラブルシューティングに関するガイドラインをいくつか提供します。
Snowparkにおけるクエリの実行プランの表示¶
DataFrame の評価計画を調べるには、 DataFrame の explain メソッドを呼び出します。これにより、 DataFrame の評価に使用される SQL ステートメントが出力されます。SQL ステートメントが1つしかない場合、メソッドはステートメントの論理プランも出力します。
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 に設定するには、次のようにします。
このファイルをクラスパスに配置します。Mavenディレクトリレイアウトを使用している場合は、ファイルを src/main/resources/ ディレクトリに配置します。
java.lang.OutOfMemoryError の例外¶
java.lang.OutOfMemoryError の例外がスローされた場合は、 JVM の最大ヒープサイズを増やします(例: -J-Xmxmaximum_size フラグを介して)。
Java 17の名前のないモジュールエラー¶
Java 17でSnowpark JavaまたはScalaクライアントを実行すると、次のようなエラーが表示されることがあります。
これは、Snowparkが Apache Arrowコネクタ を使用しており、Java 9以降のデフォルトでは公開されていない内部Java APIs に依存しているためです。
このエラーを回避するには、アプリケーションの実行時にコマンドライン引数として、またはシステムの環境変数で、次のパラメーターを設定します。
注釈
Snowpark API は、次のJavaのバージョンをサポートしています。
11.x
17.x
アプリケーション実行時の引数の設定¶
この引数は、アプリケーションの実行時にコマンドラインから設定できます。
たとえば、 java コマンドを呼び出すときに、次のように --add-opens=java.base/java.nio=ALL-UNNAMED を追加することができます。
RSA 秘密キー認証も使用している場合は、次の例のように sun.security.util も許可する必要があります。
環境変数としてのパラメーターの設定¶
パラメーターはシステムの環境変数で設定できます。環境変数の設定方法については、オペレーティングシステムの手順をご参照ください。
以下のUnixベースの例のように、 JDK_JAVA_OPTIONS 環境変数を作成または更新します。
RSA 秘密キー認証も使用している場合は、次の例のように sun.security.util も許可する必要があります。