2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure DatabricksのデータソースとしてAzure Blob Storageを用いる場合の接続方法

Posted at

Azure DatabricksからAzure Blob Storage内のデータにアクセスする際どのように行えばいいのか調べてみたところ思ったより複雑だったため、まとめておきます。

基本的には2種類あり、

  • Databricks File System(DBFS)にBlob Storageをマウントする
  • Databricksのセル内にBlob Storageへのアクセスキーを記載し接続する(非セキュア)

今回は前者に関して見ていきます。

各種リソースの作成

  • Azure Storage account
  • Azure Databricks
  • Key Container:DatabricksとBlob Storageの間の認証に使うKeyVault用

今回はDatabricks側にシークレットのスコープ(キーのコレクション)を登録することで、Blob Storageと接続します。

まずは、Storage Accountに対するアクセスキーをシークレットとしてKeyVaultに格納します。作成したStorage Accountから、[アクセス キー]に移動しkey1をコピーします。

image.png
次にそのキーをキーコンテナ―にシークレットとして配置します。作成したキーコンテナ―から、[シークレット]に移動し[生成/インポート]を選択します。
image.png

  • アップロードオプション:手動
  • 名前、コンテンツの種類:任意
  • 値:ストレージアカウントのアクセスキー

を設定し、作成します。
image.png

続いてDatabricks側の設定に移ります。
Azure Databricks instanceの[概要]から、URLを確認します。
image.png

そのURLに対し以下のような形でアクセスします。

https://<your_azure_databricks_url>#secrets/createScope

キーコンテナーの[プロパティ]から各種値をコピペして設定します。Manage PrincipalはCreatorにするとエラーになりました。
image.png
設定後[Create]します。これにより、KeyVaultがDatabricksのScopeに登録できました。

続いて、sampleデータをBlob Storageのコンテナにアップロードしておきます。ここではsamplecontainerを作成し、sales.txtをアップロードしています。
image.png

最後に、Databricksのnotebookから接続を確認します。クラスターは適宜作成してください。ノートブックのセルに対して以下コードを実行します。

dbutils.fs.mount(
  source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
  mount_point = "/mnt/<mount-name>",
  extra_configs = {"fs.azure.account.key.<storage-account-name>.blob.core.windows.net":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})

mount関数に対してTrueが帰れば成功です。Cmd2の方では中身の確認をしています。
image.png

reference

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?