概要
Databricks にて Unity Catalog のマネージドテーブル作成時と Hive メタストアのマネージドテーブル作成時にて、ディレクトリの命名規則の差異を確認するコードを共有します。次表がディレクトリ名のサンプルであり、Unity Catalog では 36 字のランダムな文字列(おそらく UUID)に基づいたディレクトリとなっているのに対して、Hive メタストアではテーブル名に基づいだディレクトリとなっています。
# | メタストア | ディレクトリ名のサンプル |
---|---|---|
1 | Hive メタストア | dbfs:/user/hive/warehouse/dir_diff.db/table_01 |
2 | Unity Catalog | abfss://metastore@dbunitycatalogus.dfs.core.windows.net/84690733-be0b-4079-902b-8ae4d60b3515/tables/5c1c3b4a-45bd-46c0-8377-d8bd35920555 |
Unity Catalog のディレクトリ名がランダムになる旨が次のように記載されており、ディレクトリ名の衝突を避けることが目的のようです。
The name of this directory is randomly generated to avoid any potential collision with other directories already present.
引用元:Unity カタログによって管理されるデータのパスはどのように機能しますか?- Azure Databricks |マイクロソフト ラーニング (microsoft.com)
このディレクトリの名前は、既に存在する他のディレクトリとの潜在的な衝突を回避するためにランダムに生成されます。
上記の翻訳
検証
Unity Catalog のマネージドテーブルのディレクトリを確認
%sql
CREATE CATALOG IF NOT EXISTS dir_diff;
CREATE SCHEMA IF NOT EXISTS dir_diff.schema_01;
CREATE TABLE IF NOT EXISTS dir_diff.schema_01.table_01
(
str_col string
)
;
%sql
DESC EXTENDED dir_diff.schema_01.table_01;
Hive メタストアのマネージドテーブルのディレクトリを確認
%sql
CREATE SCHEMA IF NOT EXISTS hive_metastore.dir_diff;
CREATE TABLE IF NOT EXISTS hive_metastore.dir_diff.table_01
(
str_col string
)
;
%sql
DESC EXTENDED hive_metastore.dir_diff.table_01;
リソースの削除
%sql
DROP SCHEMA hive_metastore.dir_diff CASCADE;
%sql
DROP CATALOG dir_diff CASCADE;