Databricks経由Machine Learningの旅 第三話 -Unity Catalogの特徴を捉える- 

# はじめに
本記事はDatabricks アドベントカレンダー2024 9日目の記事です。

https://qiita.com/advent-calendar/2024/databricks

「Databricks経由Machine Learningの旅」の3回目になります。
(前回の更新から、約３ヶ月半が経ってしまいました.....楽しみにしていた方、すみません)

[前回はNoteBookを触って、データを読み込んだり、pythonで実装できるAutoMLから簡易的な機械学習モデル構築を行いました。](https://qiita.com/wakama1994/items/02236b28078966dd0b03)

この連載の最終的なゴールとして、特徴量の拡張や膨大な学習データのインプットを行い、本格的なモデル構築を行いたいと考えております。

その中でデータカタログについて、大量のデータを使用する機械学習においてとても重要な要素の１つであり、予測モデルの構築にも影響を及ぼします。

今回は本格的な機械学習モデル構築を行う前準備として、DatabricksのデータカタログであるUnity Catalogについて整理をしたいと思います。

# 対象の読者
- Unity Catalogを使いたいけど、まだ触ったことのない方
- Databricksで機械学習モデルの構築をこれから始めたい方

# 機械学習モデル構築に有用な３つの特徴
機械学習モデルを構築する上で、非常に有用な３つの特徴を取り上げます。
この特徴があると、モデル構築を行う上でかなり有利に働くことが多いと考えます。

## 1. 非構造化データと構造化データを同時に扱える
１つ目の特徴として、非構造化データが構造化データをUnity Catalog上で同時に扱えることにあります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/1c94604b-2d72-56e2-7276-dda95a62bb2a.png)


引用元 :[「Unity Catalogのベストプラクティス」databricks公式より](https://docs.databricks.com/ja/data-governance/unity-catalog/best-practices.html#unity-catalog-best-practices)


まず非構造データに関してはボリュームに保存することが可能で、下記のように画像解析で使える`.png`や自然言語処理で使えそうな`.pdf`も同時に扱えます。
以下のように、csvファイルと同じ置き場所で取り扱うことができます。

![スクリーンショット 2024-12-08 22.13.14（2）.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/62378589-9283-cefb-83bc-978a0b3e2586.png)


また構造化データについても、非構造化データと同じスキーマに入れることが可能で、カタログ機能としてコメントやデータの説明を記載することが可能です。

![スクリーンショット 2024-12-08 22.22.40 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/40df1dc6-2dde-cdba-1f5c-e5c65fb760d3.png)

非構造と構造データを同じ場所で扱うことは、利用できるデータ幅を広げることが可能になります。

## 2. データの置き場が点在していてもカタログ機能が使える
1.の機能に加え、置き場所が点在していた場合でも、Unity Catalogで一元的に管理ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/1346486b-e3bd-99d2-2909-bd2dbf1f4a61.png)
引用元：[「Unity Catalogのオープンソース化を発表します！」databricks公式より](https://www.databricks.com/jp/blog/open-sourcing-unity-catalog)

例えば、AWSのS3やAzureの環境にあるデータだったとしても、Unity Catalogと紐付けることができます。
下記のように、S3のpathを設定すればUnity catalog上にS3のデータを表示させることができます。

また、パートナーコネクタでもあるFivetranを活用し、対応コネクタのデータをDatabricksに転送することで、Unity Catalog上でデータを扱うことができます。

![スクリーンショット 2024-12-08 22.53.44 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/14825400-a2fa-9f8a-dc9f-0d16231ee5ea.png)

なお、TROCCOも転送先databricksに対応しておりSaaSを中心とした多様なデータをUnity Catalogで管理できるよう連携できます。

## 3. データリネージ機能の充実
最後にリネージの機能が整備されていることです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/39385930-0cf5-a881-0648-283795e4f751.png)

引用元[「一般提供を発表：Unity Catalog でのデータリネージ」 databricks公式より](https://www.databricks.com/jp/blog/2022/12/12/announcing-general-availability-data-lineage-unity-catalog.html)

該当テーブルがどのテーブルとjoinしてできたのか？だけでなく、使用されているNotebookやworkflowについても特定することができます。

また、[dbtとの連携が可能](https://www.analytics8.com/blog/databricks-and-dbt-partnership-what-it-means-for-your-data-engineering-pipeline/)でもあり、dbtで作成したデータリネージをそのまま使うことができます。

# まとめ
今回はUnity Catalogについて機械学習モデルの構築に有用な機能についての整理を行いました。
取り上げた３つの機能からいえることとして「膨大なデータを扱う機械学習」に適しているなと考えています。

非構造化データを構造化データと同じ場所で扱えることもそうなのですが、AWSなどの外部にあるデータをDatabricks上で扱えることもデータのバリエーションを増やす上でとても重要だなと考えています。

次回はいよいよ本格的な機械学習モデルの構築に移っていきます。
細かい内容や予測対象は鋭意検討中です、お楽しみに！