Criar e gerenciar catálogos

Este artigo mostra como criar e gerenciar catálogos no Catálogo do Unity. Um catálogo contém esquemas (bancos de dados) e um esquema contém tabelas, exibições, volumes, modelos e funções.

Observação

Nos espaços de trabalho que foram habilitados automaticamente para o Catálogo do Unity, um catálogo do espaço de trabalho foi criado para você por padrão. Todos os usuários em seu workspace (e somente seu workspace) têm acesso a ele por padrão. Consulte Etapa 1: confirme se seu espaço de trabalho está habilitado para o Catálogo do Unity.

Observação

Para saber como criar um catálogo estrangeiro, um objeto do catálogo do Unity que espelha um banco de dados em um sistema de dados externo, confira Criar um catálogo estrangeiro. Confira também Gerenciar e trabalhar com catálogos estrangeiros.

Requisitos

Para criar um catálogo:

  • Você deve ser um administrador do metastore do Azure Databricks ou ter o privilégio CREATE CATALOG no metastore.

  • Você deve ter um metastore do Catálogo do Unity vinculado ao workspace em que executa a criação do catálogo.

  • O cluster usado para executar um notebook para criar um catálogo deve usar um modo de acesso em conformidade com o Catálogo do Unity. Consulte Modos de acesso.

    Os warehouses SQL sempre dão suporte para o Catálogo do Unity.

Criar um catálogo

Para criar um catálogo, você pode usar o Explorador de Catálogos ou um comando SQL.

Explorador de Catálogos

  1. Faça logon em um workspace vinculado ao metastore.

  2. Clique no Catalog iconCatálogo.

  3. Clique no botão Criar Catálogo.

  4. Selecione o tipo de catálogo que você deseja criar:

    • Catálogo Standard: um objeto protegível que organiza ativos de dados gerenciados pelo Catálogo do Unity. Para todos os casos de uso, exceto a Federação de Lakehouse.
    • Catálogo estrangeiro: um objeto protegível no Catálogo do Unity que espelha um banco de dados em um sistema de dados externo usando a Federação de Lakehouse. Confira Visão geral da configuração da Federação de Lakehouse.
  5. (Opcional, mas altamente recomendado) Especifique um local de armazenamento gerenciado. Requer o privilégio CREATE MANAGED STORAGE no local externo de destino. Consulte Especificar um local de armazenamento gerenciado no catálogo do Unity.

    Importante

    Se o espaço de trabalho não tiver um local de armazenamento no nível do metastore, você deverá especificar um local de armazenamento gerenciado ao criar um catálogo.

  6. Clique em Criar.

  7. (Opcional) Especifique o workspace ao qual o catálogo está associado.

    Por padrão, o catálogo é compartilhado com todos os workspaces anexados ao metastore atual. Se o catálogo contiver dados que devam ser restritos a workspaces específicos, vá para a guia Workspaces e adicione os workspaces.

    Para obter mais informações, confira (Opcional) Atribuir um catálogo a workspaces específicos.

  8. Atribua permissões para seu catálogo. Confira Privilégios e objetos protegíveis do Catálogo do Unity.

Sql

  1. Execute o comando SQL a seguir em um notebook ou no editor de SQL do Databricks. Os itens entre colchetes são opcionais. Substitua os valores de espaço reservado:

    • <catalog-name>: Um nome para o catálogo.

    • <location-path>: opcional, mas altamente recomendado. Forneça um caminho de local de armazenamento se quiser que as tabelas gerenciadas nesse catálogo sejam armazenadas em um local diferente do armazenamento raiz padrão configurado para o metastore.

      Importante

      Se o espaço de trabalho não tiver um local de armazenamento no nível do metastore, você deverá especificar um local de armazenamento gerenciado ao criar um catálogo.

      Esse caminho deve ser definido em uma configuração de localização externa e você deve ter o privilégio CREATE MANAGED STORAGE nessa configuração. É possível usar o caminho definido na configuração de localização externa ou um subcaminho (ou seja, 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' ou 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance/product'). Requer a versão 11.3 do Databricks Runtime ou superior.

    • <comment>: descrição opcional ou outro comentário.

    Observação

    Se você estiver criando um catálogo estrangeiro (um objeto protegível no Catálogo do Unity que espelha um banco de dados em um sistema de dados externo, usado para a Federação de Lakehouse), o comando SQL será CREATE FOREIGN CATALOG e as opções serão diferentes. Confira Criar um catálogo estrangeiro.

    CREATE CATALOG [ IF NOT EXISTS ] <catalog-name>
       [ MANAGED LOCATION '<location-path>' ]
       [ COMMENT <comment> ];
    

    Por exemplo, para criar um catálogo chamado example:

    CREATE CATALOG IF NOT EXISTS example;
    

    Se você quiser limitar o acesso ao catálogo a workspaces específicos em sua conta, também conhecido como associação entre workspace e catálogo, confira Associar um catálogo a um ou mais workspaces.

    Para obter descrições de parâmetros, confira CREATE CATALOG.

  2. Atribuir privilégios ao catálogo. Confira Privilégios e objetos protegíveis do Catálogo do Unity.

Quando você cria um catálogo, dois esquemas (bancos de dados) são criados automaticamente: default e information_schema.

Você também pode criar um catálogo usando o Provedor Terraform do Databricks e databricks_catalog. Recupere informações sobre catálogos usando databricks_catalogs.

(Opcional) Atribuir um catálogo a workspaces específicos

Se você usa workspaces para isolar o acesso aos dados do usuário, talvez queira limitar o acesso ao catálogo a workspaces específicos em sua conta, também conhecido como associação entre workspaces e catálogo. O padrão é compartilhar o catálogo com todos os workspaces anexados ao metastore atual.

É possível permitir acesso de leitura e gravação ao catálogo de um workspace (o padrão) ou especificar o acesso somente leitura. Se você especificar somente leitura, todas as operações de gravação serão bloqueadas desse workspace para esse catálogo.

Os casos de uso típicos para associar um catálogo a workspaces específicos incluem:

  • Garantir que os usuários só possam acessar dados de produção a partir de um ambiente de workspace de produção.
  • Garantir que os usuários só possam processar dados confidenciais em um workspace dedicado.
  • Isso fornecerá aos usuários acesso somente leitura aos dados de produção de um workspace de desenvolvedor para habilitar o desenvolvimento e o teste.

Exemplo de associação de catálogo ao workspace

Veja o exemplo do isolamento de produção e desenvolvimento. Se você especificar que os catálogos de dados de produção só podem ser acessados a partir de workspaces de produção, isso substituirá as concessões individuais emitidas aos usuários.

Catalog-workspace binding diagram

Neste diagrama, prod_catalog está associado a dois workspaces de produção. Suponha que um usuário tenha recebido acesso a uma tabela em prod_catalog chamada my_table (usando GRANT SELECT ON my_table TO <user>). Se o usuário tentar acessar my_table no workspace de desenvolvimento, receberá uma mensagem de erro. O usuário pode acessar my_table apenas dos workspaces Prod ETL e Prod Analytics.

As associações entre workspace e catálogo são respeitadas em todas as áreas da plataforma. Por exemplo, se você consultar o esquema de informações, verá apenas os catálogos acessíveis no workspace em que a consulta foi feita. Da mesma forma, as UIs de pesquisa e linhagem de dados mostram apenas os catálogos atribuídos ao workspace (seja usando associações ou por padrão).

Associar um catálogo a um ou mais workspaces

Para atribuir um catálogo a workspaces específicos, você pode usar o Explorador de Catálogos ou a API REST do Catálogo do Unity:

Permissões necessárias: administrador do metastore ou proprietário do catálogo.

Observação

Os administradores de metastore podem ver todos os catálogos em um metastore usando o Explorador de Catálogos, e os proprietários de catálogos podem ver todos os catálogos que possuem em um metastore, independentemente de o catálogo estar atribuído ao workspace atual. Os catálogos que não estão atribuídos ao workspace aparecem em cinza e nenhum objeto filho é visível ou pode ser consultado.

Explorador do Catálogo

  1. Faça logon em um workspace vinculado ao metastore.

  2. Clique no Catalog iconCatálogo.

  3. À esquerda do painel Catálogo, clique no nome do catálogo.

    O painel principal do Explorador de Catálogos tem como padrão a lista Catálogos. Você também pode selecionar o catálogo lá.

  4. Na guia Workspaces, desmarque a caixa de seleção Todos os workspaces têm acesso.

    Se o catálogo já estiver associado a um ou mais workspaces, essa caixa de seleção já estará desmarcada.

  5. Clique em Atribuir a workspaces e insira ou localize os workspaces que quer atribuir.

  6. (Opcional) Limite o acesso ao workspace a somente leitura.

    No menu Gerenciar nível de acesso, selecione Alterar o acesso para somente leitura.

    Você pode reverter essa seleção a qualquer momento editando o catálogo e selecionando Alterar o acesso para leitura e gravação.

Para revogar o acesso, vá para a guia Workspaces, selecione o workspace e clique em Revogar.

Api

Há duas APIs e duas etapas necessárias para atribuir um catálogo a um workspace. Nos exemplos a seguir, substitua <workspace-url> pelo nome da instância do workspace. Para saber como obter o nome da instância do workspace e a ID do workspace, consulte Obter identificadores para objetos do workspace. Para saber mais sobre como obter tokens de acesso, confira Autenticação para automação do Azure Databricks - visão geral.

  1. Use a API catalogs para definir isolation mode do catálogo como ISOLATED:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/catalogs/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
     "isolation_mode": "ISOLATED"
     }'
    

    O isolation mode padrão é OPEN para todos os workspaces anexados ao metastore.

  2. Use a API de atualização bindings para atribuir os espaços de trabalho ao catálogo:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "add": [{"workspace_id": <workspace-id>, "binding_type": <binding-type>}...],
      "remove": [{"workspace_id": <workspace-id>, "binding_type": "<binding-type>}...]
    }'
    

    Use as propriedades "add" e "remove" para adicionar ou remover associações de workspace. <binding-type> pode ser “BINDING_TYPE_READ_WRITE” (o padrão) ou “BINDING_TYPE_READ_ONLY”.

Para listar todas as atribuições de espaço de trabalho em um catálogo, utilize a lista da API bindings:

   curl -L -X GET 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
   -H 'Authorization: Bearer <my-token> \

Desassociar um catálogo de um workspace

Para revogar o acesso de um workspace a um catálogo, você pode usar o Catalog Explorer ou a API workspace bindings.

Importante

Se o espaço de trabalho tiver sido habilitado automaticamente para o Catálogo do Unity e você tiver um catálogo do espaço de trabalho, os administradores do espaço de trabalho possuem esse catálogo e têm todas as permissões nesse catálogo apenas no espaço de trabalho. Se você desassociar esse catálogo ou associá-lo a outros catálogos, deverá conceder permissões necessárias manualmente aos membros do grupo de administradores do workspace como usuários individuais ou usando grupos de nível de conta, pois o grupo de administradores do workspace é um grupo local de workspace. Para obter mais informações sobre grupos de contas versus grupos locais de workspace, confira Diferença entre grupos de contas e grupos locais de workspace.

Permissões necessárias: proprietário do catálogo.

Explorador do Catálogo

  1. Faça logon em um workspace vinculado ao metastore.
  2. Clique no Catalog iconCatálogo.
  3. À esquerda do painel Catálogo, clique no nome do catálogo.
  4. Na guia Workspaces, selecione o workspace e clique em Revogar.

Para dar acesso ao catálogo de todos os workspaces anexados ao metastore do Catálogo do Unity, selecione Todos os workspaces têm acesso.

Api

Para usar a API de associações de workspace para desassociar um workspace de um catálogo, execute o seguinte. Substitua <workspace-url> pelo nome da instância do seu workspace. Para saber como obter o nome da instância do workspace e a ID do workspace, consulte Obter identificadores para objetos do workspace. Para saber mais sobre como obter tokens de acesso, confira Autenticação para automação do Azure Databricks - visão geral.

curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/workspace-bindings/catalogs/<my-catalog> \
-H 'Authorization: Bearer <my-token> \
-H 'Content-Type: application/json' \
--data-raw '{
  "unassign_workspaces": [<workspace-id>, <workspace-id2>]
}'

Adicionar esquemas ao catálogo

Para saber como adicionar esquemas (bancos de dados) ao catálogo. confira Criar e gerenciar esquemas (bancos de dados).

Ver detalhes do catálogo

Para ver informações sobre um catálogo, você pode usar o Explorador de Catálogos ou um comando SQL.

Explorador de Catálogos

  1. Faça logon em um workspace vinculado ao metastore.

  2. Clique no Catalog iconCatálogo.

  3. No painel Catálogo, localize o catálogo e clique em seu nome.

    Alguns detalhes estão listados na parte superior da página. Outros podem ser vistos nas guias Esquemas, Detalhes, Permissões e Workspaces.

Sql

Execute o comando SQL a seguir em um notebook ou no editor de SQL do Databricks. Os itens entre colchetes são opcionais. Substitua o espaço reservado <catalog-name>.

Para obter mais detalhes, confira DESCRIBE CATALOG.

DESCRIBE CATALOG <catalog-name>;

Use CATALOG EXTENDED para obter os detalhes completos.

Excluir um catálogo

Para excluir (ou remover) um catálogo, você pode usar o Explorador de Catálogos ou um comando de SQL. Para remover um catálogo, você deve ser seu proprietário.

Explorador do Catálogo

Você deve excluir todos os esquemas do catálogo exceto information_schema, para poder excluir um catálogo. Isso inclui o esquema default criado automaticamente.

  1. Faça logon em um workspace vinculado ao metastore.
  2. Clique no Catalog iconCatálogo.
  3. À esquerda do painel Catálogo, clique no catálogo que deseja excluir.
  4. No painel de detalhes, clique no menu de três pontos à esquerda do botão Criar banco de dados e selecione Excluir.
  5. Na caixa de diálogo Excluir catálogo, clique em Excluir.

Sql

Execute o comando SQL a seguir em um notebook ou no editor de SQL do Databricks. Os itens entre colchetes são opcionais. Substitua o espaço reservado <catalog-name>.

Para obter descrições de parâmetros, confira DROP CATALOG.

Se você usar DROP CATALOG sem a opção CASCADE, deverá excluir todos os esquemas do catálogo, exceto information_schema, para poder excluir o catálogo. Isso inclui o esquema default criado automaticamente.

DROP CATALOG [ IF EXISTS ] <catalog-name> [ RESTRICT | CASCADE ]

Por exemplo, para excluir um catálogo chamado vaccine e seus esquemas:

DROP CATALOG vaccine CASCADE

Gerenciar o catálogo padrão

Um catálogo padrão é configurado para cada workspace habilitado para o Catálogo do Unity. O catálogo padrão permite que você execute operações de dados sem especificar um catálogo. 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.

Um administrador de workspace pode exibir ou alternar o catálogo padrão usando a interface do usuário de Configurações de Administrador. Você também pode definir o catálogo padrão para um cluster usando uma configuração do Spark.

Os comandos que não especificam o catálogo (por exemplo GRANT CREATE TABLE ON SCHEMA myschema TO mygroup) são avaliados para o catálogo na seguinte ordem:

  1. O catálogo está definido para a sessão usando uma instrução USE CATALOG ou uma configuração JDBC?
  2. A configuração spark.databricks.sql.initial.catalog.namespace do Spark está definida no cluster?
  3. Há um catálogo padrão de workspace definido para o cluster?

A configuração de catálogo padrão quando o Catálogo do Unity está habilitado

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:

  • Para alguns espaços de trabalho que foram habilitados automaticamente para o Catálogo do Unity, 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.
  • Para todos os outros espaços de trabalho, 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, normalmente faz sentido usar hive_metastore como o catálogo padrão para evitar afetar o código existente que faz referência ao metastore do Hive.

Alterar o catálogo padrão

Um administrador de workspace pode alterar o catálogo padrão do workspace. Qualquer pessoa com permissão para criar ou editar um cluster pode definir um catálogo padrão diferente para o cluster.

Aviso

Alterar o catálogo padrão pode interromper as operações de dados existentes que dependem dele.

Para configurar um catálogo padrão diferente para um workspace:

  1. Faça logon no workspace como administrador do workspace.
  2. Clique no nome de usuário na barra superior do workspace e selecione Configurações do Administrador na lista suspensa.
  3. Clique na guia Avançado.
  4. No Catálogo padrão da linha do workspace, insira o nome do catálogo e clique em Salvar.

Reinicie seus clusters e warehouses SQL para que a alteração entre em vigor. Todos os clusters e os warehouses SQL novos e reiniciados usarão esse catálogo como o padrão do workspace.

Você também pode substituir o catálogo padrão de um cluster específico definindo a seguinte configuração do Spark no cluster. Essa abordagem não está disponível para armazéns SQL:

spark.databricks.sql.initial.catalog.name

Para obter instruções, consulte Configuração do Spark.

Exibir o catálogo padrão atual

Para obter o catálogo padrão atual para seu workspace, você pode usar uma instrução SQL em um notebook ou consulta do Editor do SQL. Um administrador de workspace pode obter o catálogo padrão usando a interface do usuário de Configurações de Administrador.

Configurações de administração

  1. Faça logon no workspace como administrador do workspace.
  2. Clique no nome de usuário na barra superior do workspace e selecione Configurações do Administrador na lista suspensa.
  3. Clique na guia Avançado.
  4. Na linha Catálogo padrão do workspace, exiba o nome do catálogo.

Sql

Execute o comando a seguir em uma consulta do Notebook ou do Editor do SQL em execução em um warehouse SQL ou cluster em conformidade com o Catálogo do Unity. O catálogo padrão do workspace é retornado desde que nenhuma instrução USE CATALOG ou configuração JDBC tenha sido definida na sessão e desde que nenhuma configuração spark.databricks.sql.initial.catalog.namespace seja definida para o cluster.

SELECT current_catalog();