昨夜のData + AIサミットのキーノートも熱かったです。Unity CatalogをライブでOSSとして公開するとは。これは現地で見たかった。
Unity Catalogに関してはこちらのサイトをご覧ください。
GitHubリポジトリはこちらです。
こちらにも説明があります。
Unity CatalogはデータとAIのための最もオープンで相互運用性のあるカタログです。
-
マルチモーダルのインタフェースがすべてのフォーマット、エンジン、アセットをサポート
- マルチフォーマットのテーブルサポート - UniFormとしてのDelta LakeやApache Iceberg, Apache Parquet, CSV, etc.
- テーブル以上のものを - 非構造化データ(ボリューム)とAI資産(MLモデル、生成AIツール)
- プラグインのサポート - クライアント互換性のためにIceberg REST CatalogやHMSに拡張可能、加えて更なるプラグイン(新たなAIフレームワークとの連携など)
- 完全にオープン - OpenAPI仕様、OSS実装(Apache 2.0ライセンス)
- データとAIに対する統合ガバナンス - REST API経由の一時的な資格情報を通じたアセットレベルのアクセスコントロール
これまではDatabricksからしか使えませんでしたが、要件さえ満たせばどこでも無料で使えるようになったということです。
Macにインストールしてみます。JDK11+が必要なのでJDK Development Kit 17.0.11をインストールしました。
ターミナルで作業していきます。
mkdir UC
cd UC
git clone https://github.com/unitycatalog/unitycatalog
cd unitycatalog
build/sbt package
コンパイルが完了したらサーバーを起動します。
bin/start-uc-server
別のターミナルを開きます。以下を実行してテーブル一覧を表示します。
cd UC/unitycatalog
bin/uc table list --catalog unity --schema default
表示されました。
┌────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┐
│ NAME │ CATALOG_NAME │ SCHEMA_NAME │ TABLE_TYPE │DATA_SOURCE_FORM│ COLUMNS │STORAGE_LOCATION│ COMMENT │ PROPERTIES │ CREATED_AT │ UPDATED_AT │ TABLE_ID │
│ │ │ │ │ AT │ │ │ │ │ │ │ │
├────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│numbers │unity │default │EXTERNAL │DELTA │[{"name":"as_...│file:///Users...│External table │{"key1":"valu...│1717996383547 │1717996383547 │3fcf3ca8-e0e4...│
├────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│marksheet...│unity │default │EXTERNAL │DELTA │[{"name":"id"...│file:///tmp/m...│Uniform table │{"key1":"valu...│1717996383545 │1717996383545 │8619f354-9d3a...│
├────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│marksheet │unity │default │MANAGED │DELTA │[{"name":"id"...│file:///Users...│Managed table │{"key1":"valu...│1717996383535 │1717996383535 │4360b7b4-b606...│
└────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┘
テーブルのメタデータを確認します。
bin/uc table get --full_name unity.default.numbers
普段カタログエクスプローラで見ている詳細情報ですね。
┌────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ KEY │ VALUE │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│NAME │numbers │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CATALOG_NAME │unity │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SCHEMA_NAME │default │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│TABLE_TYPE │EXTERNAL │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│DATA_SOURCE_FORMAT │DELTA │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│COLUMNS │{"name":"as_int","type_text":"int","type_json":"{\"name\":\"as_int\",\"type\":\"integer\",\"nullable│
│ │\":false,\"metadata\":{}}","type_name":"INT","type_precision":0,"type_scale":0,"type_interval_type":│
│ │null,"position":0,"comment":"Int column","nullable":false,"partition_index":null}│
│ │{"name":"as_double","type_text":"double","type_json":"{\"name\":\"as_double\",\"type\":\"double\",\"│
│ │nullable\":false,\"metadata\":{}}","type_name":"DOUBLE","type_precision":0,"type_scale":0,"type_inte│
│ │rval_type":null,"position":1,"comment":"Double column","nullable":false,"partition_index":null} │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│STORAGE_LOCATION │file:///Users/yayoi/UC/unitycatalog/etc/data/external/unity/default/tables/numbers/ │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│COMMENT │External table │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│PROPERTIES │{"key1":"value1","key2":"value2"} │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CREATED_AT │1717996383547 │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│UPDATED_AT │1717996383547 │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│TABLE_ID │3fcf3ca8-e0e4-4587-b28b-9cc50fc30d98 │
└────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
テーブルの中身を確認します。
bin/uc table read --full_name unity.default.numbers
┌───────────────────────────────────────┬──────────────────────────────────────┐
│as_int(integer) │as_double(double) │
├───────────────────────────────────────┼──────────────────────────────────────┤
│564 │188.75535598441473 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│755 │883.6105633023361 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│644 │203.4395591086936 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│75 │277.8802190765611 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│42 │403.857969425109 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│680 │797.6912200731077 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│821 │767.7998537403159 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│484 │344.00373976089304 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│477 │380.6785614543262 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│131 │35.44373222835895 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│294 │209.32243623208947 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│150 │329.19730274053694 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│539 │425.66102859000944 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│247 │477.742227230588 │
├───────────────────────────────────────┼──────────────────────────────────────┤
│958 │509.3712727285101 │
└───────────────────────────────────────┴──────────────────────────────────────┘
一通りの動作を確認できました。チュートリアルもあるので後でやってみます。
やってみました。