統一目錄和遺留蜂巢metastore一起工作

本文解釋了如何使用一個統一的目錄與per-workspace metastore蜂巢metastore磚。

如果您的工作區在服務之前啟用統一目錄,它可能有一個蜂巢metastore包含您想要繼續使用的數據。磚建議你表由蜂巢metastore遷移到統一目錄metastore,但如果你選擇不,本文解釋了如何使用數據由metastores共同管理。

查詢的蜂巢metastore統一目錄

統一目錄metastore是添加劑,這意味著它可以用於per-workspace蜂巢metastore磚。蜂巢metastore頂級目錄稱為出現hive_metastore在三級名稱空間。

例如,您可以引用一個表sales_raw銷售模式的遺留蜂巢metastore通過使用以下符號:

選擇*hive_metastore銷售sales_raw;
顯示(火花(“hive_metastore.sales.sales_raw”))
圖書館(SparkR)顯示(tableToDF(“hive_metastore.sales.sales_raw”))
顯示(火花(“hive_metastore.sales.sales_raw”))

您還可以指定目錄和模式使用聲明:

使用hive_metastore銷售;選擇*sales_raw;
火花sql(“使用hive_metastore.sales”)顯示(火花(“sales_raw”))
圖書館(SparkR)sql(“使用hive_metastore.sales”)顯示(tableToDF(“sales_raw”))
火花sql(“使用hive_metastore.sales”)顯示(火花(“sales_raw”))

訪問控製在統一目錄和蜂巢metastore

如果你配置訪問控製表在蜂巢metastore磚繼續執行這些數據的訪問控製hive_metastore目錄為集群的共享訪問模式下運行。統一目錄訪問從傳統訪問控製模型略有不同,像沒有否認語句。蜂巢metastore是一個工作空間層對象。內定義的權限hive_metastore目錄總是指在工作區中本地用戶和組。看到區別表訪問控製

區別表訪問控製

統一目錄有以下關鍵區別使用訪問控製表遺留的蜂巢metastore在每個工作區。

統一訪問控製模型的目錄表訪問控製有以下區別:

  • 賬戶組:在統一目錄訪問控製策略應用於賬戶組,而訪問控製策略的蜂巢metastore應用於workspace-local組。看到特殊注意事項集團

  • 使用目錄使用模式需要權限的目錄和模式對象的所有操作在目錄或模式:不論主體的權限表,校長也必須有使用目錄特權在訪問模式和它的父目錄使用模式特權模式內的訪問對象。與工作表的訪問控製,另一方麵,授予使用在根目錄自動撥款使用在所有數據庫,但是使用在根目錄不是必需的。

  • 的觀點:在統一目錄,一個視圖的主人不需要一個所有者視圖的引用的表和視圖。有選擇特權是充分的,使用模式視圖的父模式和使用目錄在父目錄。訪問控製與工作表,視圖的老板需要一個所有者所有引用的表和視圖。

  • 不支持所有文件匿名函數年代:在統一目錄,沒有概念所有文件匿名函數許可。這些權限可以用來繞過訪問控製限製,允許非特權用戶特權運行代碼。

統一目錄和蜂巢metastore對象之間的連接

通過使用三級名稱空間符號,您可以加入數據統一目錄metastore遺留蜂巢metastore中的數據。

請注意

加入數據遺留蜂巢metastore隻會工作空間數據駐留的地方。嚐試運行這樣一個加入另一個工作空間會導致錯誤。磚建議你升級遺留統一目錄表和視圖。

下麵的示例連接的結果sales_current表的遺留蜂巢metastoresales_historical在統一編目metastore表order_id字段是相等的。

選擇*hive_metastore銷售sales_current加入主要shared_salessales_historicalhive_metastore銷售sales_currentorder_id=主要shared_salessales_historicalorder_id;
dfCurrent=火花(“hive_metastore.sales.sales_current”)dfHistorical=火花(“main.shared_sales.sales_historical”)顯示(dfCurrent加入(其他=dfHistorical,=dfCurrentorder_id= =dfHistoricalorder_id))
圖書館(SparkR)dfCurrent=tableToDF(“hive_metastore.sales.sales_current”)dfHistorical=tableToDF(“main.shared_sales.sales_historical”)顯示(加入(x=dfCurrent,y=dfHistorical,joinExpr=dfCurrent美元order_id= =dfHistorical美元order_id))
瓦爾dfCurrent=火花(“hive_metastore.sales.sales_current”)瓦爾dfHistorical=火花(“main.shared_sales.sales_historical”)顯示(dfCurrent加入(正確的=dfHistorical,joinExprs=dfCurrent(“order_id”)= = =dfHistorical(“order_id”)))

默認目錄

如果您省略頂級目錄名稱執行數據操作時,並沒有使用目錄聲明中,默認目錄。當然,如果你用另一種方式提供目錄名稱,比如設置一個JDBC字符串,那麼假設目錄而不是默認的目錄,當你忽略數據操作的目錄名稱。

默認情況下,默認的目錄hive_metastore。配置一個不同的工作空間的默認目錄,你可以設置一個火花配置或運行磚CLI命令:

設置spark.databricks.sql.initial.catalog.name價值。

這CLI命令更新SQL的默認目錄隻有倉庫。指定集群的默認目錄,使用火花配置。

磚unity-catalog metastores分配——workspace-id1234567890123456\——metastore-id 12 a345b6張cd - 7890 - 1 - 3456 e789f0a12b34\——default-catalog-name my_catalog

如果你的磚工作區使用per-workspace蜂巢metastore工作區之前支持統一目錄,磚建議您保留默認目錄值hive_metastore現有代碼,這樣你可以操作當前蜂巢metastore數據沒有任何改變。

警告

更改默認的目錄可以打破現有數據的操作依賴於它。

集群實例配置文件

當使用蜂巢metastore與統一目錄,實例配置文件在集群上用於訪問蜂巢metastore數據而不是數據在統一注冊目錄。

如果用戶訪問路徑統一目錄之外(如道路不是注冊表或外部位置),然後使用實例配置文件在集群上。

升級遺留表統一目錄

表在蜂房裏metastore不受益於安全與治理的全套功能統一目錄介紹,比如內置的審計和訪問控製。磚建議你升級你的遺留表通過添加統一目錄。