Snowflake Notebooks でのエラーのトラブルシューティング¶
次のシナリオは、 Snowflake Notebooks 使用時に発生する可能性のある問題のトラブルシューティングに役立ちます。
Snowsight のノートブックの総数が、以下の制限を超えています。¶
アカウント内のノートブックの総数が6000を超え、Notebooksを更新すると、以下のエラーが発生します。
ユーザーは引き続き新しいノートブックを作成できますが、Snowflakeではアカウントで使用しなくなったノートブックを削除することを推奨しています。
パッケージ更新時のNotebooks (ウェアハウスランタイム) エラー¶
Snowflakeでは、サポートされなくなった古い snowflake-ml パッケージを廃止しました。パッケージセレクターから削除され、Snowflake Anacondaチャンネルで利用することはできません。snowflake-ml を使用しており、ノートブックのパッケージを追加、削除、更新しようとすると、 snowflake-ml にはすでにアクセスできないため、これらのノートブックは失敗します。
問題を回避するには、Snowflake ML の正しいパッケージである snowflake-ml-python に切り替えてください。
プロトリーエラー¶
データポイントが1,000を超えると、Plotlyはwebglに切り替えます。
AttributeError: NoneType¶
ノートブックの既存の変数と同じ名前にセル名を変更すると、以下のエラーが発生します。
たとえば、 cell1 というPythonのセルに以下があるとします。
その後、 cell2 の名前を「session」に変更し、 cell3 で「session」を参照すると、 NotebooksはSnowparkのセッションではなく、「session」(セル名)を参照しようとしてエラーになります。
早期切断¶
ノートブックセッションはストアドプロシージャとして実行されます。タイムアウトはウェアハウスランタイムでは30分、Container Runtimeでは60分です。タイムアウト前にノートブックが予期せず切断された場合、 ACCOUNTADMIN またはウェアハウスのオーナーが STATEMENT_TIMEOUT_IN_SECONDS パラメーターを特定の値(例えば5分)にセットしている可能性があります。これは、ノートブックセッションを含むウェアハウス上ですべてのステートメントを実行できる時間を制限するものです。このパラメーターはウェアハウスまたはアカウントレベルで設定され、ウェアハウスとセッションの両方で設定された場合、ゼロでない最も小さい値が強制されます。
ノートブックをより長く実行するには、デフォルトのウェアハウス SYSTEM$STREAMLIT_NOTEBOOK$WAREHOUSE を使うか、 STATEMENT_TIMEOUT_IN_SECONDS パラメーターをより長い時間に変更します。
アイドル時間設定の詳細については、 アイドルタイムと再接続 をご参照ください。
再接続の失敗¶
ブラウザでCookieを有効にしていない場合、Notebooksセッションがまだアクティブである間(アクティビティがないためにタイムアウトする前)、自動的に再接続することはできません。ノートブックを再度開くと、エラーメッセージが表示されます。
セッションを再起動すると、現在の EXECUTE NOTEBOOK クエリが終了し、新しいセッションが開始されます。セッションを終了すると、現在の EXECUTE NOTEBOOK クエリが終了します。
Query History どちらのアクションも行わなかった場合、現在の EXECUTE NOTEBOOK クエリはウェアハウス上で実行され続けます。
ファイアウォールにより接続できません¶
ノートブックを起動しようとすると、次のようなポップアップが表示されます。
Ensure that *.snowflake.app and *.snowflake.com are on the allowlist in your network (including content filtering systems), and
can connect to Snowflake. For Streamlit apps using container runtimes, also add *.snowflakecomputing.app to the allowlist.
When these domains are on the allowlist, your apps can communicate with Snowflake servers without any restrictions.
However, in some cases adding these domains may not be sufficient due to network policies blocking subpaths under them. If this occurs,
contact your network administrator.
さらに、Snowflakeバックエンドへの接続に問題が発生しないように、ネットワーク構成で WebSockets がブロックされていないことを確認してください。
欠落しているパッケージ¶
ノートブック環境にインストールされていないパッケージを使用しようとしている場合、セル出力に以下のメッセージが表示されます。
ノートブックで使用するPythonパッケージをインポートする ページの指示に従って、必要なパッケージをインポートします。
既存のノートブックから欠落しているパッケージ¶
ノートブックの新バージョンは継続的にリリースされ、ノートブックは最新バージョンに自動アップグレードされます。古いノートブックをアップグレードすると、ノートブック環境のパッケージがアップグレードに対応していないことがあります。ノートパソコンが起動しなくなる可能性があります。
以下は、 Libpython パッケージが欠落している場合のエラーメッセージの例です。
このエラーを解決するには、以下の手順をお試しください:
ウェブページをリフレッシュし、ノートブックを再度起動します。
問題が解決しない場合は、パッケージセレクターを開き、インストールされているすべてのパッケージが有効かどうかを確認してください。各パッケージのドロップダウンで、利用可能なバージョンを確認できます。最新バージョンのパッケージを選択すると、通常はエラーが解消されます。
ノートブックがありません¶
ノートブックはスキーマレベルのオブジェクトであり、データベースの特定のスキーマ内に格納されています。スキーマがドロップ(削除)されると、そのスキーマに含まれるすべてのオブジェクト(ノートブックを含む)も削除されます。以前に存在していたノートブックが表示されない場合は、そのノートブックが属するスキーマがドロップされた可能性があります。この場合、ノートブックは完全に削除され、復元はできません。
誤ってノートブックを紛失しないようにするには:
スキーマを削除する前に、スキーマに含まれるオブジェクトを確認します。
偶発的または不正な削除を避けるために、スキーマ削除権限を制限します。
ノートブック外のバージョン管理スクリプトでノートブック内容をエクスポートすることを検討してください。
ノートブックが欠落していてスキーマがまだ存在する場合、現在のロールがスキーマとそのオブジェクトを表示するために必要な権限を持っていることを確認してください。
読み取り専用ファイルシステムの問題¶
Pythonライブラリの中には、データをローカルユーザディレクトリにダウンロードしたりキャッシュしたりするものがあります。ただし、デフォルトのユーザーディレクトリ /home/udf は読み取り専用です。これを回避するには、パスを書き込み可能な場所である /tmp に設定します。書き込みディレクトリの設定に使用する環境変数は、使用するライブラリによって異なる場合があることに注意してください。以下は、この問題が発生する既知のライブラリのリストです。
matplotlib
HuggingFace
catboost
matplotlibの例¶
matplotlibを使用していると、このような警告が表示されることがあります。
以下のコードでは、この警告を解決するために MPLCONFIGDIR 変数を /tmp/ にセットします。
Huggingfaceの例¶
Huggingfaceを使用していると、このような警告が表示されることがあります。
次のコードでは、 HF_HOME と SENTENCE_TRANSFORMERS_HOME 変数を /tmp/ に設定することで、このエラーを解消しています。
df.collect() を使用する際の出力メッセージが大きすぎます。¶
df.collect() を実行すると、セル出力に以下のメッセージが表示されます。
Snowflake Notebooks 以下のような大規模なデータセットの場合、セル出力の結果は自動的に切り捨てられます。
すべてのSQLセル結果。
snowpark.Dataframeの場合のPythonセル結果。
上のセルの問題は、 df.collect() が snowpark.Dataframe ではなく List を返すことです。リストは自動的に切り捨てられません。この問題を回避するには、 DataFrame の結果を直接出力します。
Snowpark DataFrames 上で df.to_pandas() を使用すると、ノートブックがクラッシュします。¶
df.to_pandas() を実行すると、すべてのデータがメモリにロードされるため、データサイズが関連付けられたNotebookウェアハウスのメモリ制限を超えると、Notebookセッションが終了することがあります。
例 1:Snowpark テーブルを pandas DataFrame にエクスポートする場合¶
例1の回避策¶
次の例では、Snowpark pandasでテーブルを読み込むようにコードを書き換える方法を示します。
例2:大容量の結果を含む SQL セルを参照。¶
cell1 という SQL のセルに以下のコードがある場合、出力結果は 500M 行になります。
その後、pandas DataFrame に結果を取得すると、データが大きすぎてメモリに収まらないため、Notebook がクラッシュします。
一般に、大容量のデータセットの場合、Snowflake では df.to_pandas() の使用を避けることを推奨します。代わりに、pandasでデータを操作するには、Snowpark pandas API と Snowparkに最適化されたウェアハウス を使用します。Snowpark pandas API を使用すると、Snowflake 上のデータに対して直接 pandas コードを実行し、 SQL でクエリを実行することができます。これにより、ノートブックのメモリに収まらないデータに対してpandasのコードを実行することができます。
例2の回避策¶
上記の2つ目のセル参照の例では、 SQL セルの結果をまず Snowpark DataFrame に変換します。そして、Snowpark pandasに変換することができます。
詳細は pandas on Snowflake in notebooks を参照してください。
VPN 分割トンネリングが原因で接続できません。¶
VPN がスプリットトンネリングを使用するように構成されている場合、 *.snowflake.com と *.snowflake.app の両方をネットワークポリシーの allowlist に追加する必要があります。
ノートブックが存在しませんエラー¶
名前に特殊文字が含まれているノートブックを実行しようとすると、セル出力に以下のメッセージが表示されます。
ノートブック名はSnowflake識別子です。ドットやスペースなどの特殊文字を含むノートブック名は、識別子ルールを満たすために二重引用符で囲む必要があります。
パッケージバージョンの衝突¶
ベースイメージからパッケージバージョンをロードする非対話型ノートブックを実行し、新しいバージョンをインストールしようとすると、新しいバージョンはロードされません。パッケージのバージョンがベースイメージと一致していることを確認してください。インタラクティブなノートブックでは、新しいバージョンを使うためにノートブックを再起動するよう促されます。
SPCS スケジュールノートブックが実行できません。¶
Container Runtimeでスケジュールノートブックを実行する前に、イメージリポジトリを作成する必要があります。画像リポジトリがない場合、以下のエラーが表示されます。
画像リポジトリの作成方法の詳細については、 CREATE IMAGE REPOSITORY を参照してください。
ログメッセージの出力失敗¶
ログメッセージがノートブックの出力に表示されない場合は、ログが stdout に向けられます。以下は、ログを正しく構成する方法の例です。
エラーを強調表示するには、同様の方法で stderr に送信できます。また、Snowflake NotebooksでStreamlitを使用している場合は、Streamlitの組み込み関数を使用して形式を明確にすることもできます。
ノートブック実行不能¶
CREATE NOTEBOOK を使ってノートブックを作成した場合、バージョンステージでノートブックが自動的にライブバージョンを持つことはありません。ライブバージョンをセットせずに EXECUTE NOTEBOOK を使ってノートブックを実行しようとした場合、またはノートブックを作成した後でそのノートブックが削除された場合、次のエラーが発生します。
このエラーを解決するには、以下のコマンドを使用して初期ライブバージョンをセットします。