次の方法で共有


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 では、次の理由により、すべてのテストに serverless compute を使用するPythonに Databricks Connect を使用することをお勧めします。

  • 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

Windowsで Databricks Connect を使用している場合は、次を参照してください。

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

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