こんにちは。今日はAzure Databricksでハマった部分があったので、以下に備忘メモを残しておきます。
問題
Databricks SQLで、LISTコマンドを実行すると、「No parent external location found for path ‘abfss:XXX」エラーが発生した。
なお、外部データは、Azure Databricksとは独立したAzure Data Lake Storage Gen2に配置している。
原因と対処方法
データを置いているData Lake Storage Gen2にDatabricksがアクセスする権限が十分でなかった。
以下の手順に従って、外部の場所とストレージの資格情報を構成することで解決できた。
外部の場所とストレージの資格情報を管理する – Azure Databricks | Microsoft Learn
まず、Databricksのアクセスコネクタリソースを作成して、そのアクセスコネクタに対して外部ストレージとして利用するADLS Gen2上でストレージの操作権限(RBAC)を付与します。
その上で、Unity Catalogを利用している場合は、カタログエクスプローラーから「ストレージの資格情報」を構成します。
このときに、先ほど作成したアクセスコネクタのリソースURIを設定してDatabricksワークスペースとアクセスコネクタを紐づけます。
次に、その資格情報を利用して「外部の場所」を定義します。SQLから作成できます。
%sql
CREATE EXTERNAL LOCATION <任意の外部の場所名>
URL 'abfss://<コンテナ名>@<ストレージリソース名>.dfs.core.windows.net/<ディレクトリ名>'
WITH (CREDENTIAL <先ほど作成したストレージ資格情報名>);
外部のロケーションを作成したら、接続のテストをして、接続・権限に問題がないか確認できます。
この設定を行った上でLIST文を発行すると、無事外部ストレージの中身が確認できました。
おしまい
コメントを残す