注
この記事では、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.UNAVAILABLE、StatusCode.UNKNOWN、DNS resolution failed、Received http2 header with status: 500 などの文字列を含むエラー メッセージが表示されます。
考えられる原因: Databricks Connect がクラスターに到達できません。
推奨される解決策:
- ワークスペース インスタンス名が正しいことを確認します。 環境変数を使用する場合は、お使いのローカル開発マシンで関連する環境変数が使用可能であり、正しいことを確認します。
- クラスター ID が正しいことを確認します。 環境変数を使用する場合は、お使いのローカル開発マシンで関連する環境変数が使用可能であり、正しいことを確認します。
- ご使用のクラスターのカスタム クラスター バージョンが、Databricks Connect と互換性のある適切ものであることを確認します。
Python バージョンの不一致
ローカルで使用しているPythonバージョンに、クラスター上のバージョンと少なくとも同じマイナー リリースがあることを確認します (たとえば、3.10.11 と 3.10.10 は OK、3.10 と 3.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)には、OSSpysparkで使用できない機能が含まれています。 -
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 がスペースを含むパスのディレクトリにインストールされました。 これに対処するには、スペースのないディレクトリ パスに をインストールするか、短縮名形式を使用してパスを構成します。