Habilitar a federação Hive metastore para um legado workspace Hive metastore
Este artigo mostra como federar seu legado Databricks Hive metastore para que sua organização possa trabalhar com suas tabelas Hive metastore usando Unity Catalog.
Para obter uma visão geral da federação Hive metastore, consulte Hive metastore federation: enable Unity Catalog to govern tables registered in a Hive metastore.
Antes de começar
Veja a lista de serviços e recursos suportados pela federação Hive metastore: Requisitos, recursos suportados e limitações.
Os requisitos específicos para cada etapa estão listados abaixo.
Etapa 1: Conecte o site Unity Catalog ao seu Hive metastore
Nesta etapa, o senhor cria uma conexão , um objeto securizável Unity Catalog que especifica um caminho e as credenciais para acessar um sistema de banco de dados, neste caso o seu Databricks workspace 's legacy Hive metastore.
Requisitos
- O privilégio
CREATE CONNECTION
no metastore do Unity Catalog.
Crie a conexão
A conexão especifica um caminho e as credenciais para acessar um sistema de banco de dados externo. Para criar uma conexão, você pode usar o Catalog Explorer ou o comando CREATE CONNECTION
do SQL em um Notebook do Databricks ou no editor de consultas SQL do Databricks.
O senhor também pode usar a API REST da Databricks ou a CLI da Databricks para criar uma conexão. Veja POST /api/2.1/unity-catalog/connections e Unity Catalog comando.
Permissões necessárias: Administrador do Metastore ou usuário com o privilégio CREATE CONNECTION
.
- Catalog Explorer
- SQL
-
In your Databricks workspace, click
Catalog.
-
On the Quick access page, click Add data > Add a connection.
-
On the Connection basics page of the Set up connection wizard, enter a user-friendly Connection name.
-
Select a Connection type of Hive Metastore and Metastore type of Internal.
-
(Optional) Add a comment.
-
Click Next.
-
(Optional) On the Connection details page, enter the fully qualified path to the Hive Warehouse directory.
You need this only if you don’t want to use the default location.
-
Click Create connection.
-
On the Catalog basics page, enter a name for the foreign catalog.
-
For Authorized paths, choose cloud storage paths that can be accessed via the catalog. Only tables falling under these paths can be queried via the federated catalog. Paths must be covered by external locations. For more information, see What are authorized paths?.
-
Click Create catalog.
-
On the Access page, select the workspaces in which users can access the catalog you created. You can select All workspaces have access, or click Assign to workspaces, select the workspaces, and then click Assign.
-
Add an Owner who will be able to manage access to all objects in the catalog. Start typing a user or group in the text box, and then click the user or group in the returned results.
-
Grant Privileges on the catalog.
- Click Grant.
- Specify the Principals who will have access to objects in the catalog. Start typing a user or group in the text box, and then click the user or group in the returned results.
- Select the Privilege presets to grant to each user or group. All account users are granted
BROWSE
by default.- Select Data Reader from the drop-down menu to grant
read
privileges on objects in the catalog. - Select Data Editor from the drop-down menu to grant
read
andmodify
privileges on objects in the catalog. - Manually select the privileges to grant.
- Select Data Reader from the drop-down menu to grant
- Click Grant.
-
Click Next.
-
On the Metadata page, optionally specify tags as key-value pairs. For more information, see Apply tags to Unity Catalog securable objects.
-
(Optional) Add a comment.
-
Click Save.
Run the following command in a notebook or the SQL query editor.
CREATE CONNECTION IF NOT EXISTS <connection-name> TYPE hive_metastore
OPTIONS (
builtin true,
warehouse_directory '/path/to/warehouse-directory' );
Include warehouse_directory
only if you don’t want to use the default Hive warehouse directory location for your Hive metastore from the cluster configuration. This path is used to derive the location of managed tables or schemas when they are created from the federated catalog.
Etapa 2: Criar locais externos para dados em seu legado interno Hive metastore
Nesta etapa, o senhor configura um local externo em Unity Catalog para controlar o acesso aos locais de armazenamento em nuvem que mantêm os dados registrados no seu legado interno Hive metastore.
Os locais externos são objetos protegíveis do Unity Catalog que associam credenciais de armazenamento a caminhos de contêineres de armazenamento em nuvem. Consulte Locais externos e credenciais de armazenamento.
Requisitos
Para conhecer os requisitos de permissão do armazenamento em nuvem e da Databricks, consulte "Antes de começar" em Criar um local externo para conectar o armazenamento em nuvem à Databricks.
Se o senhor estiver criando um local externo para o legado do workspace DBFS root, consulte "Antes de começar" em Criar um local externo para dados em DBFS root.
Opções para criar o local externo
O processo que a Databricks recomenda para criar um local externo no Unity Catalog depende de sua situação:
- Se o senhor não tiver uma credencial de armazenamento criada em Unity Catalog, poderá criar o local externo usando um padrão do AWS CloudFormation que cria uma credencial de IAM role e de armazenamento para o senhor. Siga as instruções em Criar um local externo para um bucket S3 usando um padrão AWS CloudFormation.
- Se o senhor já tiver uma credencial de armazenamento criada no Unity Catalog, crie o local externo manualmente. Siga as instruções em Criar um local externo manualmente usando o Catalog Explorer ou Criar um local externo usando o SQL.
- Se o senhor estiver federando um Databricks Hive metastore interno que armazena dados em montagensDBFS ou DBFS rooto senhor poderá criar o local externo manualmente e usar a opção Copiar da montagem DBFS . Isso ocorre independentemente da existência ou não de uma credencial de armazenamento aplicável. Siga as instruções em Criar um local externo manualmente usando o Catalog Explorer ou Criar um local externo para dados em DBFS root.
Ativar o modo de fallback em locais externos
Assim que o senhor cria um local externo em Unity Catalog, o acesso ao caminho representado por esse local externo é imposto pelas permissões de Unity Catalog quando o senhor executa consultas em Unity Catalog-enabled compute. Isso pode interromper as cargas de trabalho existentes que não têm as permissões corretas do Unity Catalog para acessar o caminho.
Quando um local externo está no modo fallback, o sistema primeiro verifica as permissões Unity Catalog da entidade consultante no local e, se isso não for bem-sucedido, volta a usar o clustering existente ou as credenciais no escopo do Notebook, como o perfil da instância ou as propriedades de configuração Apache Spark, para que as cargas de trabalho existentes continuem a ser executadas sem interrupções.
O modo de fallback é conveniente quando o senhor está no processo de migração da carga de trabalho legada. Depois de atualizar suas cargas de trabalho para execução com êxito usando as permissões Unity Catalog, o senhor deve desativar o modo fallback para evitar que as credenciais com escopo de clustering herdadas sejam usadas para contornar a governança de dados Unity Catalog.
O senhor pode ativar o modo de fallback usando o Catalog Explorer ou a API REST de locais externos do Unity Catalog.
Permissões necessárias : Proprietário do local externo.
- Catalog Explorer
- API
- In your Databricks workspace, click
Catalog.
- On the Quick access page, click External data >.
- Select the external location you want to update.
- Turn on the Fallback mode toggle and click Enable to confirm.
The following curl examples show how to enable fallback mode when you create an external location and when you update an existing external location.
Creating a new external location:
curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
"name": "fallback_mode_enabled_external_location",
"url": "s3://external_location_bucket/url",
"credential_name": "external_location_credential",
"fallback": true
"skip_validation": true
}'
Updating an external location:
curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-location-name> \
--data
'{
"comment": "fallback mode enabled",
"fallback": true
}'
Etapa 3: criar um catálogo estrangeiro
Talvez você já tenha concluído essa etapa se tiver usado o assistente de criação de conexão no Catalog Explorer para concluir a Etapa 1. Se não tiver criado o catálogo externo ao concluir a etapa 1 ou se tiver usado o SQL para criar a conexão, será necessário seguir as instruções desta seção.
Nesta etapa, o senhor usa a conexão criada na etapa 1 para criar um catálogo externo em Unity Catalog que aponta para o local externo criado na etapa 2. Um catálogo externo é um objeto seguro em Unity Catalog que espelha um banco de dados ou catálogo em um sistema de dados externo, permitindo que o senhor realize consultas a esses dados em seu Databricks workspace, com acesso gerenciado por Unity Catalog. Nesse caso, o catálogo espelhado são seus dados registrados em Hive metastore.
Sempre que um usuário ou fluxo de trabalho interage com o catálogo externo, os metadados são sincronizados a partir do site Hive metastore.
Requisitos
Requisitos de permissão :
Para criar o catálogo estrangeiro:
- O privilégio
CREATE CATALOG
em seu metastore do Unity Catalog. - Propriedade da conexão ou o privilégio
CREATE FOREIGN CATALOG
na conexão. - Para inserir caminhos autorizados para o catálogo externo, você deve ter o privilégio
CREATE FOREIGN SECURABLE
em um local externo que cubra esses caminhos. O proprietário do local externo tem esse privilégio pelo site default.
Para trabalhar com o catálogo estrangeiro:
- Propriedade do catálogo ou
USE CATALOG
requisitos de computação :
- Para criar o catálogo usando o Catalog Explorer: não é necessário o endereço compute.
- Para criar o catálogo usando SQL: Databricks Runtime 13.3 LTS ou acima.
- Para trabalhar com o catálogo: um compute com modo de acesso padrão em Databricks Runtime 13.3 LTS, 14.3 LTS, 15.1 ou acima.
Crie o catálogo estrangeiro
Para criar um catálogo externo, o senhor pode usar o Catalog Explorer ou o comando CREATE FOREIGN CATALOG
SQL em um Notebook Databricks ou o editor de consultas SQL.
Consulte também gerenciar e trabalhar com catálogos estrangeiros.
O senhor também pode usar a API do Unity Catalog. Consulte Criar um catálogo na referência da API REST da Databricks.
- Catalog Explorer
- SQL
-
In your Databricks workspace, click
Catalog to open Catalog Explorer.
-
On the Quick access page, click the Add data botton and select Add a catalog .
-
Enter a Catalog name and select a catalog Type of Foreign.
-
Select the Connection that you created in Step 1 from the drop-down.
-
In the Authorized paths field, enter paths to the cloud storage locations that you defined as external locations in Step 2. For example,
s3://demo, s3://depts/finance
.Authorized paths are an added layer of security for foreign catalogs backed by Hive metastore federation. See What are authorized paths?.
-
Click Create.
-
(Optional) Click Configure to open a wizard that walks you through granting permissions on the catalog and adding tags. You can also perform these steps later.
See Manage privileges in Unity Catalog and Apply tags to Unity Catalog securable objects.
-
(Optional) Bind the catalog to specific workspaces.
By default, catalogs can be accessed from any workspace attached to the Unity Catalog metastore (restricted by user privileges). If you want to allow access only from specific workspaces, go to the Workspaces tab and assign workspaces. See Limit catalog access to specific workspaces.
-
Populate the foreign catalog with the Hive metastore metadata.
Any time a user or workflow interacts with the foreign catalog, metadata is synced from the Hive metastore. The first interaction populates the catalog in Unity Catalog and makes its contents visible in the Catalog Explorer UI. You can populate the catalog by selecting and starting a supported compute resource in Catalog Explorer. You must be the catalog owner (which you are by virtue of creating the catalog) or a user with the
USE CATALOG
privilege.
Run the following SQL command in a notebook or the SQL query editor. Items in brackets are optional. Replace the placeholder values:
<catalog-name>
: Name for the catalog in Databricks.<connection-name>
: The name of the connection object that you created in Step 1.<path1>,<path2>
: Paths to the cloud storage locations that you defined as external locations in Step 2. For example,s3://demo, s3://depts/finance
. Authorized paths are an added layer of security for foreign catalogs backed by Hive metastore federation. See What are authorized paths?. See What are authorized paths?. If you don't add authorized paths when you create the catalog, you can useALTER CATALOG
to add them later. See ALTER CATALOG.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (authorized_paths '<path1>,<path2>');
Any time a user or workflow interacts with the federated catalog, metadata is synced from the Hive metastore.
Se uma tabela estrangeira tiver um local de armazenamento no DBFS e o ponto de montagem do DBFS que faz o backup da tabela tiver sido remapeado para um caminho diferente desde que a tabela foi acessada pela última vez, o acesso à tabela falhará com o código de erro UC_RESOLVED_DBFS_PATH_MISMATCH
. Use o seguinte comando para atualizar o local do DBFS resolvido e corrigir o erro:
REFRESH FOREIGN TABLE my_federated_catalog.schema.table RESOLVE DBFS LOCATION;
O senhor deve ser um PROPRIETÁRIO ou ter o privilégio de gerenciar a mesa. Consulte REFRESH FOREIGN (CATALOG, SCHEMA e TABLE).