Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo explica uma abordagem para continuar a usar o metastore do Hive por workspace herdado quando seu workspace do Azure Databricks estiver habilitado para o Catálogo do Unity.
Se o seu workspace estava em serviço antes de ser habilitado para o Catálogo Unity (Unity Catalog), ele provavelmente possui um metastore Hive contendo dados que você pode querer continuar a usar. Este artigo descreve como continuar a trabalhar com tabelas registradas em um metastore do Hive.
Importante
O metastore do Hive por workspace é um recurso herdado e as instruções fornecidas neste artigo representam fluxos de trabalho herdados.
As tabelas no metastore do Hive não se beneficiam do conjunto completo de recursos de segurança e governança fornecidos pelo Catálogo do Unity, como auditoria interna, linhagem e controle de acesso. O Databricks recomenda migrar essas tabelas e as cargas de trabalho que as fazem referência ao Catálogo do Unity e desabilitar o acesso direto ao metastore do Hive.
Dois caminhos de migração estão disponíveis:
Atualize todas as tabelas registradas no metastore do Hive no Unity Catalog.
Federar seu metastore do Hive para o Catálogo do Unity usando a federação do metastore do Hive para uma abordagem mais gradual. A federação do metastore do Hive cria um catálogo estrangeiro no Catálogo do Unity que espelha o metastore do Hive.
Consulte Atualizar um espaço de trabalho do Azure Databricks para o Catálogo do Unity.
Consultar o metastore do Hive legado no Catálogo do Unity
O metastore do Catálogo do Unity é aditivo, o que significa que ele pode ser usado com o metastore do Hive por workspace no Azure Databricks. O metastore do Hive é exibido como um catálogo de nível superior chamado hive_metastore
no namespace de três níveis.
Por exemplo, você pode consultar uma tabela chamada sales_raw
no esquema sales
no metastore herdado do Hive usando a seguinte notação:
SQL
SELECT * from hive_metastore.sales.sales_raw;
Pitão
display(spark.table("hive_metastore.sales.sales_raw"))
R
library(SparkR)
display(tableToDF("hive_metastore.sales.sales_raw"))
Scala (linguagem de programação)
display(spark.table("hive_metastore.sales.sales_raw"))
Você também pode especificar o catálogo e o esquema com uma instrução USE
:
SQL
USE hive_metastore.sales;
SELECT * from sales_raw;
Pitão
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
R
library(SparkR)
sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))
Scala (linguagem de programação)
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
Controle de acesso no Unity Catalog em comparação com o metastore Hive legado
Se você configurou o controle de acesso à tabela herdada no metastore do Hive, o Databricks continuará a impor esses controles de acesso aos dados no hive_metastore
catálogo para clusters em execução no modo de acesso padrão.
O modelo de acesso do Catálogo do Unity difere ligeiramente dos controles de acesso herdados:
-
Metastore: o Catálogo do Unity é um objeto no nível da conta e o metastore do Hive é um objeto no nível do workspace. As permissões definidas no catálogo
hive_metastore
sempre se referem aos usuários e aos grupos locais no workspace. - Grupos de contas: As políticas de controle de acesso no Catálogo do Unity são aplicadas aos grupos de contas, enquanto as políticas de controle de acesso para o metastore do Hive são aplicadas aos grupos locais do workspace. Consulte fontes de grupo.
-
USE CATALOG
eUSE SCHEMA
permissões são necessárias no catálogo e no esquema para todas as operações em objetos dentro do catálogo ou esquema: Independentemente dos privilégios de um usuário em uma tabela, o usuário também deve ter oUSE CATALOG
privilégio no catálogo pai para acessar o esquema e oUSE SCHEMA
privilégio para acessar objetos dentro do esquema. Com os controles de acesso de tabela no nível do workspace, a concessão deUSAGE
no catálogo raiz concedeUSAGE
automaticamente em todos os bancos de dados, masUSAGE
no catálogo raiz não é necessário. -
Exibições: No Catálogo do Unity, o proprietário de uma exibição não precisa ser um proprietário das tabelas e exibições referenciadas da exibição. Ter o
SELECT
privilégio é suficiente, juntamente comUSE SCHEMA
no esquema pai das exibições eUSE CATALOG
no catálogo pai. Com controles de acesso à tabela no nível do espaço de trabalho, o proprietário de uma visualização precisa ser proprietário de todas as tabelas e visualizações referenciadas. - pt-BR: Sem suporte para
ANY FILE
ouANONYMOUS FUNCTION
: no Catálogo do Unity, não existe o conceito de umANY FILE
ouANONYMOUS FUNCTION
protegível que possa permitir que um usuário sem privilégios execute código privilegiado. -
Sem suporte para
DENY
: o modelo de privilégio do Catálogo do Unity é baseado no princípio do privilégio mínimo. Privilégios que não são concedidos são negados implicitamente. -
Sem privilégios
READ_METADATA
: o Catálogo do Unity gerencia o acesso para exibir metadados de uma maneira diferente. Confira Privilégios e objetos protegíveis do Catálogo do Unity.
Junções entre objetos do metastore do Hive e o Catálogo do Unity
Usando a notação de namespace de três níveis, você pode unir os dados de um metastore do Catálogo do Unity aos dados do metastore herdado do Hive.
Observação
Uma junção com os dados do metastore do Hive herdado só funcionará no workspace onde esses dados estão. Se você tentar executar essa junção em outro workspace, isso resultará em um erro. O Azure Databricks recomenda que você atualize tabelas e exibições herdadas para o Catálogo do Unity.
O exemplo a seguir une os resultados da tabela sales_current
do metastore herdado do Hive à tabela sales_historical
do metastore do Catálogo do Unity quando os campos order_id
são iguais.
SQL
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;
Pitão
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
))
R
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))
Scala (linguagem de programação)
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 padrão é configurado para cada espaço de trabalho habilitado para o Catálogo do Unity.
Se você omitir o nome do catálogo de nível superior ao executar operações de dados, o catálogo padrão será assumido.
O catálogo padrão que foi inicialmente configurado para seu workspace depende de como seu workspace foi habilitado para o Catálogo do Unity:
- Se seu espaço de trabalho foi habilitado para o Unity Catalog automaticamente, o catálogo do espaço de trabalho foi definido como o catálogo padrão. Confira Habilitação automática do Catálogo do Unity.
- Se o workspace foi habilitado para o Catálogo do Unity manualmente, o catálogo
hive_metastore
foi definido como o catálogo padrão.
Se você estiver fazendo a transição do metastore do Hive para o Catálogo do Unity em um workspace existente, fará sentido usar hive_metastore
como catálogo padrão para evitar afetar o código existente que faz referência ao metastore de hive, a menos que você tenha migrado totalmente do metastore do Hive.
Para saber como obter e alternar o catálogo padrão, confira Gerenciar o catálogo padrão
Permissões de acesso a dados com escopo de cluster
Quando você usa o metastore do Hive junto com o Catálogo do Unity, as credenciais de acesso a dados associadas ao cluster são usadas para acessar os dados do metastore do Hive, mas não os dados registrados no Catálogo do Unity.
Se os usuários acessarem caminhos que estão fora do Catálogo do Unity (como um caminho não registrado como uma tabela ou local externo), as credenciais de acesso atribuídas ao cluster serão usadas.
Veja Conectar-se ao Azure Data Lake Storage e ao Armazenamento de Blobs.