統一目錄和遺留蜂巢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_sales。sales_historical在hive_metastore。銷售。sales_current。order_id=主要。shared_sales。sales_historical。order_id;
dfCurrent=火花。表(“hive_metastore.sales.sales_current”)dfHistorical=火花。表(“main.shared_sales.sales_historical”)顯示(dfCurrent。加入(其他=dfHistorical,在=dfCurrent。order_id= =dfHistorical。order_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不受益於安全與治理的全套功能統一目錄介紹,比如內置的審計和訪問控製。磚建議你升級你的遺留表通過添加統一目錄。