LoginSignup
0
0

Azure Data Factory から Databricks シークレットを取得する Databricks ノートブックを実行した際のエラー対応:IllegalArgumentException

Last updated at Posted at 2024-05-09

概要

Azure Data Factory から Databricks シークレットを取得する Databricks ノートブックを実行した際に発生した下記エラーに対する対応方法を共有します。一時的にエラーとなっているだけかもしれませんが、念のため記事にしました。

IllegalArgumentException: No enum constant com.databricks.api.proto.databricks.ErrorCodeEnum.ErrorCode.401

image.png

対応方法としては、Unity カタログ アクセス モード割り当て済みに変更する方法です。試しておりませんが、共有に設定しても動作する可能性があります。

image.png

以前に投稿した記事にて、Unity Catalog が有効なワークスペースではアクセスモードがシングルユーザーとなり今回のエラーは発生しませんが、Unity Catalog が有効でないワークスペースでは今回のエラーが発生する可能性があります。

image.png

引用元:Azure Data Factory から Databricks Jobs computing を作成した際の挙動確認 #AzureDataFactory - Qiita

エラーの発生方法と

事前準備

Databricks シークレットの登録

%pip install databricks-sdk --upgrade -q
dbutils.library.restartPython()
from databricks.sdk import WorkspaceClient
from databricks.sdk.core import DatabricksError
 
w = WorkspaceClient()

scope_name = 'qiita'

try:
    w.secrets.create_scope(scope=scope_name)
except DatabricksError:
    print(f"Scope `{scope_name}` already exists!")

# シークレットの項目名と値をセット
scope_key_and_values = {
    "value_01": "qiita_article_01",
    "value_02": "qiita_article_02",
}

# シークレットを登録
for key,value in scope_key_and_values.items():
    w.secrets.put_secret(
        scope=scope_name,
        key=key,
        string_value=value,
    )

image.png

シークレットを取得するノートブックを作成

# シークレットを取得できることを確認
scope_name = 'qiita'

print(dbutils.secrets.get(scope_name,"value_01"))

image.png

エラーの再現

デフォルトの状態(Unity カタログ アクセス モードが空)の状態の Databricks のリンクサービスを作成

image.png

シークレットを取得するノートブックをパイプラインから実行し、エラー終了となることを確認

image.png

IllegalArgumentException: No enum constant com.databricks.api.proto.databricks.ErrorCodeEnum.ErrorCode.401

image.png

対応方法

Databricks のリンクサービスのUnity カタログ アクセス モード割り当て済みに変更

image.png

パイプラインを実行し正常終了することを確認

image.png

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0