Azure Databricksで「No parent external location found for path ‘abfss:XXX」エラーが発生する原因と対処法

こんにちは。今日は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文を発行すると、無事外部ストレージの中身が確認できました。

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。