次の方法で共有


Databricks Connect for Python のトラブルシューティング

この記事では、Databricks Runtime 13.3 LTS 以降用の Databricks Connect について説明します。

この記事では、Databricks Connect for Python のトラブルシューティングに関する情報を紹介します。 Databricks Connect を使用すると、一般的な IDE、ノートブック サーバー、カスタム アプリケーションを Azure Databricks クラスターに接続できます。 「Databricks Connect とは」を参照してください。 この記事の Scala バージョンについては、「Databricks Connect for Scala のトラブルシューティング」を参照してください。

エラー: StatusCode.UNAVAILABLE、StatusCode.UNKNOWN、DNS の解決に失敗したか、状態 500 の http2 ヘッダーを受信しました

問題: Databricks Connect でコードを実行しようとすると、StatusCode.UNAVAILABLEStatusCode.UNKNOWNDNS resolution failedReceived http2 header with status: 500 などの文字列を含むエラー メッセージが表示されます。

考えられる原因: Databricks Connect がクラスターに到達できません。

推奨される解決策:

  • ワークスペース インスタンス名が正しいことを確認します。 環境変数を使用する場合は、お使いのローカル開発マシンで関連する環境変数が使用可能であり、正しいことを確認します。
  • クラスター ID が正しいことを確認します。 環境変数を使用する場合は、お使いのローカル開発マシンで関連する環境変数が使用可能であり、正しいことを確認します。
  • ご使用のクラスターのカスタム クラスター バージョンが、Databricks Connect と互換性のある適切ものであることを確認します。

Python のバージョンが一致しない

ローカルで使用している Python バージョンのマイナー リリースが、少なくともクラスター上のバージョンと同じ (たとえば、3.10.113.10.10 なら OK で、3.103.9 ではダメ) ことを確認します。 サポートされているバージョンについては、 バージョンのサポート マトリックスを参照してください。

複数の Python バージョンがローカルにインストールされている場合は、PYSPARK_PYTHON 環境変数 (たとえば、PYSPARK_PYTHON=python3) を設定して、Databricks Connect で適切なバージョンが使用されていることを確認します。

競合している PySpark インストール

databricks-connect パッケージが PySpark と競合している。 両方をインストールすると、Python で Spark コンテキストを初期化するときにエラーが発生します。 これは、"ストリームの破損" エラーや "クラスが見つかりません" エラーなど、いくつかのパターンで現れる可能性があります。 Python 環境にpysparkがインストールされている場合は、databricks-connectをインストールする前にアンインストールする必要があります。 PySpark をアンインストールした後、Databricks Connect パッケージをすべて再インストールしてください。

pip3 uninstall pyspark
pip3 uninstall databricks-connect
pip3 install --upgrade "databricks-connect==14.0.*"  # or X.Y.* to match your specific cluster version.

Databricks Connect と PySpark は相互に排他的ですが、Python 仮想環境を使用して、IDE で databricks-connect を使用してリモート開発を行い、ターミナルで pyspark を使用してローカル テストを行うことができます。 ただし、Databricks では、次の理由により、すべてのテストで サーバーレス コンピューティング で Databricks Connect for Python を使用することをお勧めします。

  • Databricks ランタイム(そのため databricks-connect)には、OSS pysparkで使用できない機能が含まれています。
  • databricks-connectとサーバーレスを使用したテストは、pysparkをローカルで使用する場合よりも高速です。
  • pysparkでは Unity カタログ統合を使用できないため、pysparkをローカルで使用してテストするときに、アクセス許可は適用されません。
  • Databricks コンピューティングなどの外部依存関係を使用してエンド ツー エンドでテストする場合は、単体テストではなく統合テストが最適です。

ローカル Spark クラスターへの接続を引き続き選択する場合は、次を使用して 接続文字列 を指定できます。

connection_string = "sc://localhost"
DatabricksSession.builder.remote(connection_string).getOrCreate()

バイナリの PATH エントリの競合または欠落

spark-shell のようなコマンドが、Databricks Connect のバイナリではなく、以前にインストールされた他のバイナリを実行するよう、PATH が構成されている場合があります。 Databricks Connect のバイナリを優先とするか、以前にインストールしたバイナリを削除する必要があります。

spark-shellのようなコマンドを実行できない場合は、pip3 installによって PATH が自動的に設定されなかった可能性があり、インストール bin dir を手動で PATH に追加する必要があります。 設定されていない場合でも、IDE で Databricks Connect を使用できます。

Windows 上のファイル名、ディレクトリ名、ボリューム ラベル構文が正しくない

Databricks Connect を Windows で使用していて、以下が表示される場合

The filename, directory name, or volume label syntax is incorrect.

Databricks Connect がスペースを含むパスのディレクトリにインストールされました。 これに対処するには、スペースのないディレクトリ パスに をインストールするか、短縮名形式を使用してパスを構成します。