统一目录和遗留蜂巢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。您可以配置一个不同的默认目录。

如果你的砖工作区使用per-workspace蜂巢metastore工作区之前支持统一目录,砖建议您保留默认目录值hive_metastore现有代码,这样你可以操作当前蜂巢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

获取当前默认目录

获取当前默认目录,运行这个砖CLI命令,取代metastore ID与你的:

砖unity-catalog metastores得到- id 12 a345b6张cd - 7890 - 1 - 3456 e789f0a12b34

metastore ID,运行unity-catalogmetastores得到概要。例如,看到的总结当前metastore信息

集群级数据访问权限

当你使用蜂巢metastore与目录,统一数据访问凭证与集群相关的用于访问蜂巢metastore数据而不是数据在统一注册目录。

如果用户访问路径统一目录之外(如道路不是注册表或外部位置),然后分配给集群的访问凭证。

看到谷歌云存储

升级遗留表统一目录

表在蜂房里metastore不受益于安全与治理的全套功能统一目录介绍,比如内置的审计和访问控制。砖建议你升级你的遗留表通过添加统一目录。