統一目錄和遺留蜂巢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
。您可以配置一個不同的默認目錄。
如果你的磚工作區使用per-workspace蜂巢metastore工作區之前支持統一目錄,磚建議您保留默認目錄值hive_metastore
現有代碼,這樣你可以操作當前蜂巢metastore數據沒有任何改變。
警告
更改默認的目錄可以打破現有數據的操作依賴於它。
開關默認目錄
配置一個不同的工作空間的默認目錄,您可以使用這些方法:
使用API來指定一個不同的賬戶
default_catalog_name
當你分配一個metastore工作區(或更新metastore分配)。使用POST /賬戶/ {account_id} /工作區/ {workspace_id} / metastores / {metastore_id}或把/賬戶/ {account_id} /工作區/ {workspace_id} / metastores / {metastore_id}。運行這個磚CLI命令:
磚unity-catalog metastores分配——workspace-id1234567890123456\——metastore-id 12 a345b6張cd - 7890 - 1 - 3456 e789f0a12b34\——default-catalog-name my_catalog
所有SQL倉庫和集群將使用這個目錄作為默認。
你也可以覆蓋默認的目錄為一個特定的集群通過設置以下火花在集群配置。這種方法不能用於SQL倉庫:
火花。磚。sql。最初的。目錄。的名字
說明,請參閱火花配置。
獲取當前默認目錄
獲取當前默認目錄,運行這個磚CLI命令,取代metastore ID與你的:
磚unity-catalog metastores得到- id 12 a345b6張cd - 7890 - 1 - 3456 e789f0a12b34
metastore ID,運行磚unity-catalogmetastores得到概要
。例如,看到的總結當前metastore信息。
集群級數據訪問權限
當你使用蜂巢metastore與目錄,統一數據訪問憑證與集群相關的用於訪問蜂巢metastore數據而不是數據在統一注冊目錄。
如果用戶訪問路徑統一目錄之外(如道路不是注冊表或外部位置),然後分配給集群的訪問憑證。
看到穀歌雲存儲。
升級遺留表統一目錄
表在蜂房裏metastore不受益於安全與治理的全套功能統一目錄介紹,比如內置的審計和訪問控製。磚建議你升級你的遺留表通過添加統一目錄。