Trabalhe com Unity Catalog e o Hive metastore
Este artigo explica como usar oworkspace Hive metastore por workspace quando Unity Catalog seu do Databricks está habilitado para .
Se o seu workspace estava em serviço antes de ser ativado para Unity Catalog, ele provavelmente tem um Hive metastore que contém dados que você deseja continuar a usar. A Databricks recomenda que você migre as tabelas gerenciadas pelo Hive metastore para o metastore do Unity Catalog , mas se você optar por não fazer isso, este artigo explica como trabalhar com dados gerenciados por ambos os metastore.
Consultar o Hive metastore no Unity Catalog
O metastore do Unity Catalog é aditivo, o que significa que pode ser usado com oHive metastore por workspace no Databricks. O Hive metastore aparece como um catálogo de nível superior chamado hive_metastore
no namespace de três níveis.
Por exemplo, você pode se referir a uma tabela chamada sales_raw
no esquema sales
no Hive metastore usando a seguinte notação:
SELECT * from hive_metastore.sales.sales_raw;
display(spark.table("hive_metastore.sales.sales_raw"))
library(SparkR)
display(tableToDF("hive_metastore.sales.sales_raw"))
display(spark.table("hive_metastore.sales.sales_raw"))
Você também pode especificar o catálogo e o esquema com uma instrução USE
:
USE hive_metastore.sales;
SELECT * from sales_raw;
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
library(SparkR)
sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
Controle de acesso no Unity Catalog e no Hive metastore
Se você configurou o controle de acesso da tabela no Hive metastore, o Databricks continua a impor esses controles de acesso para dados no catálogo hive_metastore
para clusters em execução no modo de acesso compartilhado. O modelo de acesso do Unity Catalog difere um pouco dos controles de acesso herdados, como nenhuma instrução DENY
. O Hive metastore é um objeto no nível workspace . As permissões definidas no catálogo hive_metastore
sempre se referem aos usuários e grupos locais na workspace. Veja Diferenças do controle de acesso da tabela.
Diferenças do controle de acesso da tabela
Unity Catalog tem as seguintes diferenças key em relação ao uso do controle de acesso da tabela no Hive metastore em cada workspace.
O modelo de controle de acesso no Unity Catalog tem as seguintes diferenças do controle de acesso da tabela:
gruposaccount : as políticas de controle de acesso no Unity Catalog são aplicadas a grupos account , enquanto as políticas de controle de acesso para o Hive metastore são aplicadas a grupos locais de workspace. Consulte Diferença entre grupos de contas e grupos locais de workspace.
As permissões
USE CATALOG
eUSE SCHEMA
são necessárias no catálogo e esquema para todas as operações em objetos dentro do catálogo ou esquema: independentemente dos privilégios de um principal em uma tabela, o principal também deve ter o privilégioUSE CATALOG
em seu catálogo pai para acessar o esquema e o privilégioUSE SCHEMA
para acessar objetos dentro do esquema. Por outro lado, com o controle de acesso no nível workspaceda tabela, concederUSAGE
no catálogo raiz concede automaticamenteUSAGE
em todos os bancos de dados, masUSAGE
no catálogo raiz não é necessário.view: No Unity Catalog, o proprietário de uma view não precisa ser um proprietário das tabelas e view referenciadasda view. Ter o privilégio
SELECT
é suficiente, junto comUSE SCHEMA
no esquema pai da vieweUSE CATALOG
no catálogo pai. Com o controle de acesso no nível workspaceda tabela, o proprietário de uma viewprecisa ser o proprietário de todas as tabelas e view referenciadas.Não há suporte para
ANY FILE
ouANONYMOUS FUNCTION
: Em Unity Catalog, não há nenhum conceito deANY FILE
ouANONYMOUS FUNCTION
securizável que possa permitir que um usuário sem privilégios execute código privilegiado.Sem privilégio
READ_METADATA
: Unity Catalog gerenciar o acesso aos metadados de view de uma maneira diferente. Consulte Privilégios e objetos protegidos do Unity Catalog.
Junções entre Unity Catalog e objetos Hive metastore
Ao usar a notação de namespace de três níveis, você pode join dados em um metastore Unity Catalog com dados no Hive metastore.
Observação
Uma join com dados no Hive metastore só funcionará no workspace onde esses dados residem. Tentar executar tal join em outro workspace resulta em erro. Databricks recomenda que você atualize as tabelas herdadas e view para Unity Catalog.
O exemplo a seguir resulta da join da tabela sales_current
no Hive metastore com a tabela sales_historical
no metastore do Unity Catalog quando os campos order_id
são iguais.
SELECT * FROM hive_metastore.sales.sales_current
JOIN main.shared_sales.sales_historical
ON hive_metastore.sales.sales_current.order_id = main.shared_sales.sales_historical.order_id;
dfCurrent = spark.table("hive_metastore.sales.sales_current")
dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
other = dfHistorical,
on = dfCurrent.order_id == dfHistorical.order_id
))
library(SparkR)
dfCurrent = tableToDF("hive_metastore.sales.sales_current")
dfHistorical = tableToDF("main.shared_sales.sales_historical")
display(join(
x = dfCurrent,
y = dfHistorical,
joinExpr = dfCurrent$order_id == dfHistorical$order_id))
val dfCurrent = spark.table("hive_metastore.sales.sales_current")
val dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
right = dfHistorical,
joinExprs = dfCurrent("order_id") === dfHistorical("order_id")
))
catálogo padrão
Um catálogo default é configurado para cada workspace habilitado para o Unity Catalog.
Se você omitir o nome do catálogo de nível superior ao executar operações de dados, o catálogo default será assumido.
O catálogo default que foi inicialmente configurado para seu workspace depende de como seu workspace foi habilitado para o Unity Catalog:
Se o seu workspace foi ativado automaticamente para Unity Catalog , o catálogoworkspace foi definido como o catálogo default . Consulte Ativação automática do Unity Catalog.
Se seu workspace foi ativado manualmente para Unity Catalog , o catálogo
hive_metastore
foi definido como o catálogo default .
Se você estiver fazendo a transição do Hive metastore para Unity Catalog em um workspace existente, normalmente faz sentido usar hive_metastore
como o catálogo default para evitar impactar o código existente que faz referência ao Hive metastore.
Para saber como obter e alternar o catálogo default, consulte gerenciar o catálogo default
permissões de acesso a dados com escopo clusters
Quando você usa o Hive metastore junto com o Unity Catalog, as credenciais de acesso a dados associadas aos clusters são usadas para acessar os dados Hive metastore , mas não os dados registrados no Unity Catalog.
Se os usuários acessarem caminhos que estão fora do Unity Catalog (como um caminho não registrado como uma tabela ou local externo), as credenciais de acesso atribuídas aos clusters serão usadas.
Consulte Conectar-se ao Amazon S3.
Atualizar tabelas legadas para o Unity Catalog
As tabelas no Hive metastore não se beneficiam do conjunto completo de recursos de segurança e governança que o Unity Catalog apresenta, como auditoria integrada e controle de acesso. Databricks recomenda que você atualize suas tabelas herdadas adicionando-as ao Unity Catalog.