Scala のDatabricks 接続のトラブルシューティング

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

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

エラー: ステータス コードは使用できません、ステータス コード.不明、DNS 解決に失敗しました、またはステータス 500 の http2 ヘッダーを受信しました

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

原因: Databricks Connect がクラスタリングに到達できません。

ソリューション

  • ワークスペースのインスタンス名が正しいことを確認します。 環境変数を使用する場合は、関連する環境変数がローカル開発コンピューターで使用可能で正しいことを確認してください。

  • クラスター ID が正しいことを確認します。 環境変数を使用する場合は、関連する環境変数がローカル開発コンピューターで使用可能で正しいことを確認してください。

  • クラスターに、Databricks Connect と互換性のある正しいカスタム クラスター バージョンがあることを確認します。

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

問題: Windows で Databricks Connect を使用していて、次のように表示されます。

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

原因: Databricks Connect は、 パスにスペースがあるディレクトリにインストールされました。

ソリューション: これを回避するには、スペースを含まないディレクトリ パスにインストールするか、 短い名前の形式を使用してパスを構成します。

エラー: MemoryUtil の初期化に失敗しました

問題: DatabricksSessionをビルドしようとすると、 Failed to initialize MemoryUtilエラーが返されます。

原因 : Apache Arrow は Arrow Databricks Connect クライアントの依存関係であり、リフレクションを使用してプライベート Java メソッドにアクセスしようとしています。これは、セキュリティ上の理由から Java 17 でデフォルトでブロックされています。

ソリューション

JVMの初期化前に、次のJVMフィールドを設定します。

--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED

詳細については、「 Apache Arrow Java Compatibility」を参照してください。

ヒント

IntelliJ で Java オプションを設定するには、 IntelliJ の実行/デバッグ構成を参照してください。