Databricks Connect for Python のトラブルシューティング
この記事では、Databricks Runtime13.3LTS以降のDatabricks Connectについて説明します。
この記事では、Databricks Connect for Python のトラブルシューティング情報を提供します。 Databricks Connect を使用すると、一般的な IDE、ノートブック サーバー、およびカスタム アプリケーションを 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
は問題ありませんが、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ではDatabricks Connect for Pythonをサーバ レス コンピュート と一緒に使用することをお勧めします。これは次の理由によります。
- Databricks Runtime (つまり
databricks-connect
) には、OSSpyspark
では使用できない機能が含まれています。 databricks-connect
とサーバレスを使用したテストは、pyspark
をローカルで使用してテストするよりも高速です。- Unity Catalog の統合は Unity
pyspark
では使用できないため、pyspark
をローカルでテストするときには、アクセス許可は適用されません。 - Databricksコンピュートなどの外部依存関係を使用してエンドツーエンドでテストする場合は、単体テストではなく統合テストが最適です。
ローカル Spark クラスタリングに接続する場合でも、次を使用して 接続文字列 を指定できます。
connection_string = "sc://localhost"
DatabricksSession.builder.remote(connection_string).getOrCreate()
バイナリの PATH
エントリが競合または欠落している
PATH は、 spark-shell
のようなコマンドが、Databricks Connect で提供されるバイナリではなく、以前にインストールされた他のバイナリを実行するように構成されている可能性があります。 Databricks Connect バイナリが優先されるか、以前にインストールされたバイナリを削除する必要があります。
spark-shell
のようなコマンドを実行できない場合は、PATHがpip3 install
によって自動的に設定されていない可能性もあり、インストールbin
dirをPATHに手動で追加する必要があります。これが設定されていなかったとしても、IDEでDatabricks Connectを使用することは可能です。
Windows でファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません
Windows で Databricks Connect を使用していて、次の情報が表示される場合:
The filename, directory name, or volume label syntax is incorrect.
Databricks Connect は、 パスにスペースがあるディレクトリにインストールされました。 これを回避するには、スペースを含まないディレクトリパスにインストールするか、 短い名前の形式を使用してパスを設定します。