目次
1. はじめに
皆さんこんにちは。
Data and AI Summit 2023において、Databricks Unity CatalogのVolumes(以下、ボリューム)機能が紹介されましたが、この機能についてご存知でしょうか?
ボリュームはUnity Catalog内で画像や音楽などの非構造化データの探索、管理、処理、追跡が可能になります。
本ブログでは、ボリュームの使用方法と一般的なユースケースについて説明します。
2. Databricks Unity Catalogのボリュームとはなんですか?
ボリュームとは、Unity Catalog内のディレクトリとファイルを整理するための新しいカタログアイテムです。
クラウドストレージ内のデータ(構造化データ、半構造化データ、非構造化データ)にアクセスし、それらを管理できます。
ボリュームにはマネージドボリュームと外部ボリュームがあります。
- マネージドボリュームは、スキーマを格納するデフォルトストレージロケーションに作成されるストレージボリュームです。
- 外部ボリュームは、外部ロケーションとして登録したストレージのディレクトリに作成されるストレージボリュームです。
3. Databricks Unity Catalogのボリュームの使用ための事前条件
「ボリューム」はUnity Catalog内の重要な構成要素であり、これを使用するにはワークスペースにUnity Catalogを有効にする必要があります。
「アカウントを管理」のページで、対象のワークスペースにUnity Catalogを有効にできます。
4. マネージドボリュームを作成してみます
DatabricksのワークスペースのUIを使用し、マネージドボリュームを作成し、PDFファイルをアップロードしてみましょう。
4.1. マネージドボリュームを作成
メニューバーから「Catalog」を選択し、対象のカタログ、そしてスキーマをクリックします。
スキーマ画面の右側で、「Create」をクリックし、「Create volume」を選択します。
ボリュームの作成画面にアクセスしたら、ボリューム名とボリュームのタイプを指定します。「マネージドボリューム」を選択してください。
4.2. マネージドボリュームにPDFファイルをアップロードしてみます
作成したマネージドボリュームの画面の右側にある、「Upload to this volume」を選択します。その後、アップロードしたいファイルをポップアップ画面にドラッグします。
ボリュームにはPDF、DOC、画像などの非構造化データもアップロードすることが可能です。
4.3. 権限付与
マネージドボリュームの画面で、「Permissions」タブを選択することで、どのユーザーやグループがどの権限を持つかを設定できます。
5. 外部ボリュームを作成してみます
DatabricksのワークスペースのUIを使用して、外部ボリュームを作成し、Azureのストレージアカウントに保存されたPDFファイルをアップロードしてみましょう。
5.1. Access connectorを作成
Databricksは、外部ボリュームを外部テーブルのように管理し、Azure、AWS、GCPなどのDatabricks以外のデータソースからデータをマウントできます。
外部データソースを使用する場合、Databricksへの接続にはコネクタが必要です。Azureでは、公開されているDatabricksコネクタが提供されているため、このブログではそれを使用します。
「リソースの作成」をクリックし、「Azure Databricks access connector」を検索して、このリソースを追加します。
追加した後、リソースIDをコピーします。
5.2. ストレージアカウントへのアクセス権を付与
コネクタを作成しましたが、このコネクタはまだストレージアカウントへのアクセス権を持っていません。
したがって、ストレージアカウントの設定画面で、「ストレージBLOBデータの共同作成者」権限をDatabricksコネクタに付与します。
5.3. ストレージの認証情報を作成
次に、Databricksに移動して、Unity Catalog内でコネクタのリソースIDを追加します。
- Managed identifyをチェックする。
- Storage credential name: ストレージの認証情報の名前を設定する。
- Access connector ID: 先ほどコピーしたリソースID
そして、「Create」をクリックして、次の画面が表示されます。
5.4. Unity Catalog 外部ロケーションを作成
コネクターは設定済みですが、Databricksはどのデータを読み込むかまだ指定されていません。
今から外部ロケーションを作成し、ストレージアカウントのファイルパスを追加します。
- External location name: 外部ロケーションの名前を設定する。
- URL: ファイルパスを以下の形式で入力します。「abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>」
- Storage credential: 先ほど作成したストレージの認証情報名を選択する。
5.5. 外部ボリュームを作成
5.4まで、問題なく設定が完了したら、Databricksはストレージアカウントのデータを読み込むようになるため、外部ボリュームを作成してみましょう。
マネージドボリュームの作成方法と同様に、対象のカタログとスキーマで「Create volume」をクリックします。
今回は、「External volume」を選択します。 そして、先ほど作成した外部ロケーションは「External location」に表示されるので、この外部ロケーションを選択します。
選択した後、自動的にパスが挿入されますので、ストレージアカウントのパスが正しいことを確認してください。
そして、「Create」をクリックして、外部ボリュームを作成し、ストレージアカウントのデータが自動的に読み込まれて表示されます。
6. ノートブックでボリュームのデータを読み込んでみます
ノートブックで、ボリュームは普通のフォルダのように管理されます。
以下のPythonスクリプトを使用すると、ボリューム内のファイルパスがあれば、ファイルをロードできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# importing required modules import PyPDF2 # creating a pdf file object pdfFileObj = open('/Volumes/mycatalog/myschema/managed-volume/三浦 義澄.pdf', 'rb') # creating a pdf reader object pdfReader = PyPDF2.PdfReader(pdfFileObj) # printing number of pages in pdf file print(len(pdfReader.pages)) # creating a page object pageObj = pdfReader.pages[0] # extracting text from page print(pageObj.extract_text()) # closing the pdf file object pdfFileObj.close() |
ノートブックに非構造化データをロードした後、その非構造化データを活用するさまざまな方法があります。Databricksを使用すると、非構造化データを活用して機械学習モデルのトレーニングやデータ分析などを行うことができます。
活用方法についてもブログ掲載していく予定です。是非ご覧ください!
7. まとめ
本記事ではDatabricksのUnity Catalogのマネージドボリューム及び外部ボリュームの使用方法とPDFファイル(非構造化データ)を読み込み、Databricksのノートブックで表示する方法について説明しました。
今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。
日商エレクトロニクスでは、Azure Databricksの環境構築パッケージを用意しています。
Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたらぜひお問い合わせください!
Azure Databricks連載記事のまとめはこちら
お問い合わせはこちら
この記事を読んだ方へのオススメコンテンツはこちら
この記事を書いた人
- ファン コック トゥアン
この投稿者の最新の記事
- 2024年6月17日ブログData+AI Summit 2024 Unity Catalogの新機能
- 2024年6月13日ブログData+AI Summit 2024 Day2 (6/12)
- 2024年6月13日ブログData+AI Summit 2024 Day1 (6/11)
- 2023年10月24日ブログ【Azure Databricks】Unity Catalog Volumeを利用して非構造化データを読み込み、表示してみる