统一目录和遗留蜂巢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数据没有任何改变。
警告
更改默认的目录可以打破现有数据的操作依赖于它。
开关默认目录
配置一个不同的工作空间的默认目录,你可以设置一个火花配置或运行砖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不受益于安全与治理的全套功能统一目录介绍,比如内置的审计和访问控制。砖建议你升级你的遗留表通过添加统一目录。