Atualizar tabelas e visualizações do Hive para o Unity Catalog

Este artigo descreve como atualizar tabelas e exibições registradas no metastore workspace-local existente do Hive para o Catálogo do Unity. Você pode atualizar uma tabela do Hive para uma tabela gerenciada ou uma tabela externa no Catálogo do Unity.

  • As tabelas gerenciadas são a maneira padrão de criar tabelas no Catálogo do Unity. O Catálogo do Unity gerencia totalmente o ciclo de vida, o layout de arquivo e o armazenamento delas. O Catálogo do Unity também otimiza o desempenho delas automaticamente. As tabelas gerenciadas sempre usam o formato de tabela Delta.

    As tabelas gerenciadas residem em um local de armazenamento gerenciado que você reserva para o Catálogo do Unity. Devido a esse requisito de armazenamento, você precisará usar CLONE ou CREATE TABLE AS SELECT (CTAS) se quiser copiar tabelas do Hive existentes para o Catálogo do Unity como tabelas gerenciadas.

  • Tabelas externas são tabelas cujo ciclo de vida de dados, layout de arquivo e local de armazenamento não são gerenciados pelo Catálogo do Unity. Vários formatos de dados são compatíveis com tabelas externas.

    Normalmente, você usa tabelas externas somente quando também precisa de acesso direto aos dados usando computação não Databricks (ou seja, não usando clusters do Databricks ou warehouses SQL do Databricks). Tabelas externas também são convenientes em cenários de migração, pois você pode registrar dados existentes no Catálogo do Unity rapidamente sem precisar copiar dados. Isso ocorre graças ao fato de que os dados em tabelas externas não precisam residir no armazenamento gerenciado reservado.

Para obter mais informações sobre tabelas gerenciadas e externas no Catálogo do Unity, consulte Tabelas.

Opções de migração do Hive para o Catálogo do Unity

Quando estiver pronto para migrar tabelas do Hive para o Catálogo do Unity, você terá várias opções, dependendo do caso de uso:

Ferramenta de migração Descrição Requisitos de tabela do Hive Tabela do Catálogo do Unity criada Por que devo usá-la?
UCX Um conjunto abrangente de utilitários de linha de comando e outras ferramentas que avaliam a preparação do workspace para a migração do Catálogo do Unity e executam fluxos de trabalho que migram identidades, permissões, locais de armazenamento e tabelas para o Catálogo do Unity. O UCX está disponível no GitHub em databrickslabs/ucx. Tabelas do Hive gerenciadas ou externas Gerenciadas ou externas Você deseja uma ferramenta abrangente de planejamento de atualização de workspace que vá além de atualizar tabelas do Hive para o Catálogo do Unity. Você deseja atualizar workspaces que têm grandes quantidades de dados no metastore do Hive. Você está confortável executando scripts. Se você quiser executar uma atualização em massa de tabelas do Hive para tabelas gerenciadas do Catálogo do Unity, essa é sua única opção. O UCX, como todos os projetos do Databricks Labs, é um repositório público do GitHub e não tem suporte diretamente pelo Databricks.
Assistente de atualização do Catálogo do Unity Um recurso do Gerenciador de Catálogos que permite copiar em massa esquemas inteiros (bancos de dados) e várias tabelas gerenciadas e externas do metastore do Hive para o metastore do Catálogo do Unity como tabelas externas. O assistente de atualização executa o comando SYNC nas tabelas selecionadas, deixando as tabelas originais do Hive intactas. Você tem a opção de agendar atualizações regulares para obter alterações nas tabelas de origem do Hive. Tabelas do Hive gerenciadas ou externas Apenas externo Você deseja atualizar rapidamente suas tabelas do Hive para tabelas externas no Catálogo do Unity e prefere uma interface visual. A capacidade de agendar sincronizações regulares quando a tabela do Hive de origem é alterada torna-a uma ferramenta útil para gerenciar um workspace "híbrido" do Hive e do Catálogo do Unity durante a transição para o Catálogo do Unity.
Comando SYNC do SQL SYNC permite que você copie tabelas externas e tabelas gerenciadas (se as tabelas gerenciadas forem armazenadas fora do armazenamento do workspace do Databricks, às vezes conhecido como raiz DBFS) em seu metastore do Hive para tabelas externas no Catálogo do Unity. Você pode sincronizar tabelas individuais ou esquemas inteiros.

SYNC foi projetado para ser executado em um agendamento para pegar novas alterações no metastore do Hive e sincronizá-las com o Catálogo do Unity.
Tabelas do Hive gerenciadas ou externas Apenas externo Você deseja atualizar rapidamente suas tabelas do Hive para tabelas externas no Catálogo do Unity e prefere usar comandos SQL em vez de uma interface visual.

O agendamento de execuções regulares do SYNC para atualizar as tabelas existentes do Catálogo do Unity quando a tabela de origem do Hive é alterada torna-a uma ferramenta útil para gerenciar um workspace "híbrido" do Hive e do Catálogo do Unity durante a transição para o Catálogo do Unity.

Como você não pode usar SYNC para atualizar tabelas gerenciadas que estão no armazenamento do workspace do Databricks, use CREATE TABLE CLONE para essas tabelas.
Comando do SQL CREATE TABLE CLONE CREATE TABLE CLONE permite que você atualize tabelas gerenciadas em seu metastore do Hive para tabelas gerenciadas no Catálogo do Unity. Você pode clonar tabelas individuais.

Clones profundos são preferenciais, pois copiam dados da tabela de origem para o destino de clonagem, além dos metadados de tabela existentes.
Tabelas do Hive gerenciadas que estão no formato Delta, Parquet ou Iceberg. A clonagem de tabelas de origem Parquet e Iceberg tem alguns requisitos e limitações específicos: consulte Requisitos e limitações para clonar tabelas Parquet e Iceberg. Somente gerenciado Você deseja migrar tabelas gerenciadas do Hive para tabelas gerenciadas do Catálogo do Unity para aproveitar ao máximo a governança de dados do Catálogo do Unity e suas tabelas do Hive atendem aos critérios listados na célula "Requisitos da tabela do Hive".

Se as tabelas do Hive não atenderem aos "requisitos da tabela do Hive", você poderá usar o comando do SQL CREATE TABLE AS SELECT para atualizar uma tabela do Hive para uma tabela gerenciada do Catálogo do Unity. No entanto, CLONE é quase sempre preferível. A clonagem tem uma sintaxe mais simples do que CREATE TABLE AS SELECT: você não precisa especificar particionamento, formato, invariáveis, nulidade, fluxo, COPY INTO e outros metadados, pois eles são clonados da tabela de origem.

Este artigo descreve como executar todos, exceto o processo de atualização controlado pelo UCX. O Databricks recomenda o UCX para a maioria dos cenários de atualização do workspace. No entanto, para casos de uso mais simples, você pode preferir uma ou mais das ferramentas descritas aqui.

Antes de começar

Esta seção descreve alguns dos impactos da migração para os quais você deve estar preparado, juntamente com permissões e requisitos de computação.

Entender o impacto

Você deve estar ciente de que, ao modificar suas cargas de trabalho para usar as novas tabelas do Catálogo do Unity, talvez seja necessário alterar alguns comportamentos:

  • O Catálogo do Unity gerencia partições de maneira diferente do Hive. Não há suporte para os comandos do Hive que manipulam diretamente partições em tabelas gerenciadas pelo Catálogo do Unity.
  • O histórico da tabela não é migrado quando você executa CREATE TABLE CLONE. Todas as tabelas no metastore do Hive que você clona no Catálogo do Unity são tratadas como novas tabelas. Você não pode executar viagens no tempo do Delta Lake ou outras operações que dependem do histórico de pré-migração.

Consulte Trabalhar com o Catálogo Unity e o metastore herdado do Hive.

Requisitos

Para executar migrações, você precisa ter:

  • Um workspace que tenha um metastore do Catálogo do Unity e pelo menos um catálogo do Catálogo do Unity. Consulte Configurar e gerenciar o Catálogo do Unity.

  • Privilégios nos catálogos do Catálogo do Unity para os quais você está migrando tabelas. Esses requisitos de privilégio são enumerados no início de cada procedimento abordado neste artigo.

  • Para migração para tabelas externas do Catálogo do Unity: credenciais de armazenamento e locais externos definidos no Catálogo do Unity e o privilégio CREATE EXTERNAL TABLE no local externo.

  • Acesso à computação do Azure Databricks que atende aos dois seguiintes requisitos:

    • Dá suporte ao Catálogo do Unity (warehouses do SQL ou recursos de computação que usam o modo de acesso compartilhado ou de usuário único).
    • Permite o acesso às tabelas no metastore do Hive.

    Como os recursos de computação que usam o modo de acesso compartilhado estão habilitados para controle de acesso de tabela herdado por padrão, isso significa que, se você usar esse modo de acesso, precisará ter privilégios de controle de acesso à tabela no metastore do Hive da qual está migrando. Você pode conceder acesso a si mesmo usando o seguinte comando do SQL:

    GRANT all_privileges ON catalog hive_metastore TO `<user>`
    

    Como alternativa, você pode usar um recurso de computação no modo de acesso de usuário único.

Para obter mais informações sobre como gerenciar privilégios em objetos no metastore do Hive, consulte Privilégios e objetos protegíveis no metastore do Hive (herdado). Para obter mais informações sobre como gerenciar privilégios em objetos no metastore do Catálogo do Unity, consulte Gerenciar privilégios no Catálogo do Unity.

Identificar tabelas gerenciadas pelo metastore do Hive

Para determinar se uma tabela está registrada no Catálogo do Unity no momento, verifique o nome do catálogo. As tabelas no catálogo hive_metastore são registradas no metastore workspace-local do Hive. Todos os outros catálogos listados são regidos pelo Catálogo do Unity.

Para exibir as tabelas no catálogo hive_metastore usando o Gerenciador de Catálogos:

  1. Clique no ícone do CatálogoCatálogo na barra lateral.
  2. No painel catálogo, navegue até o catálogo hive_metastore e expanda os nós de esquema.

Você também pode pesquisar uma tabela específica usando o campo de filtro no painel Catálogo.

Atualizar um esquema ou várias tabelas do metastore do Hive para tabelas externas do Catálogo do Unity usando o assistente de atualização

Você pode copiar esquemas completos (bancos de dados) e várias tabelas externas ou gerenciadas do metastore padrão do Hive do Azure Databricks para o metastore do Catálogo do Unity usando o assistente de atualização do Explorador de catálogos. As tabelas atualizadas serão tabelas externas no Catálogo do Unity.

Para obter ajuda para decidir quando usar o assistente de atualização, consulte as opções de migração do Hive para Catálogo do Unity.

Requisitos

Requisitos de formato de dados:

Requisitos de computação:

  • Um recurso de computação que dá suporte ao Catálogo do Unity. Consulte Antes de começar.

Requisitos de permissão e objeto do Catálogo do Unity:

  • Uma credencial de armazenamento para uma identidade gerenciada do Azure ou entidade de serviço que autoriza o Catálogo do Unity a acessar o caminho de localização das tabelas.
  • Um local externo que referencia a credencial de armazenamento recém-criada e o caminho para os dados no seu locatário de nuvem.
  • Permissão CREATE EXTERNAL TABLE nos locais externos das tabelas a serem atualizadas.

Requisitos de acesso à tabela do Hive:

  • Se a computação usar o modo de acesso compartilhado, você precisará de acesso às tabelas no metastore do Hive, concedido usando o controle de acesso de tabela herdado. Consulte Antes de começar.

Processo de atualização

  1. Clique no Ícone do catálogoCatálogo na barra lateral para abrir o Explorador de catálogos.

  2. Selecione hive_metastore como seu catálogo e escolha o esquema (banco de dados) que deseja atualizar.

    Seleção do banco de dados

  3. Clique em Atualizar no canto superior direito do modo de exibição de detalhe do esquema.

  4. Selecione todas as tabelas que você quer atualizar e clique em Próximo.

    Somente tabelas externas em formatos compatíveis com o Catálogo do Unity podem ser atualizadas usando o assistente de atualização.

  5. Defina o catálogo de destino, o esquema (banco de dados) e o proprietário de cada tabela.

    Os usuários poderão acessar a tabela recém-criada no contexto de seus privilégios no catálogo e esquema.

    Os proprietários de tabela têm todos os privilégios na tabela, incluindo SELECT e MODIFY. Se você não selecionar um proprietário, as tabelas gerenciadas serão criadas com você como o proprietário. O Databricks geralmente recomenda que você conceda a propriedade da tabela aos grupos. Para saber mais sobre a propriedade de objetos no Catálogo do Unity, confira Gerenciar a propriedade do objeto Catálogo do Unity.

    Para atribuir o mesmo catálogo e esquema a várias tabelas, selecione as tabelas e clique no botão Definir destino .

    Para atribuir o mesmo proprietário a várias tabelas, selecione as tabelas e clique no botão Definir proprietário .

  6. Examine as configurações da tabela. Para modificá-las, clique no botão Anterior.

  7. Clique em Criar Consulta para Atualização.

    Um editor de consultas aparece com instruções SQL geradas.

  8. Executa a consulta.

    Quando a consulta for concluída, os metadados de cada tabela terão sido copiados do metastore do Hive para o Catálogo do Unity. Essas tabelas são marcadas como atualizadas no assistente de atualização.

  9. Defina o controle de acesso refinado usando a guia Permissões de cada nova tabela.

  10. (Opcional) Adicione comentários a cada tabela do Hive atualizada que aponta os usuários para a nova tabela do Catálogo do Unity.

    Retorne à tabela original no catálogo hive.metastore para adicionar o comentário da tabela.

    Se você usar a sintaxe a seguir no comentário da tabela, notebooks e consultas do editor de consultas SQL que fazem referência à tabela do Hive preterida exibirão o nome da tabela preterida usando texto tachado, exibirão o comentário como um aviso e fornecerão um link de Correção Rápida para o Assistente do Databricks, que pode atualizar seu código para referenciar a nova tabela.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consulte Adicionar comentários para indicar que uma tabela do Hive foi migrada.

  11. Modifique as cargas de trabalho para usar as novas tabelas.

    Se você adicionou um comentário à tabela original do Hive, como a listada na etapa opcional anterior, poderá usar o link Correção Rápida e o Assistente do Databricks para ajudar você a encontrar e modificar cargas de trabalho.

Atualizar apenas uma tabela do Hive para uma tabela externa do Catálogo do Unity usando o assistente de atualização

Você pode copiar uma tabela do metastore padrão do Hive para o metastore do Catálogo do Unity usando o assistente de atualização no Explorador de Catálogos

Para obter ajuda para decidir quando usar o assistente de atualização, consulte as opções de migração do Hive para Catálogo do Unity.

Requisitos

Requisitos de formato de dados:

Requisitos de computação:

  • Um recurso de computação que dá suporte ao Catálogo do Unity. Consulte Antes de começar.

Requisitos de permissão e objeto do Catálogo do Unity:

  • Uma credencial de armazenamento para uma identidade gerenciada do Azure ou entidade de serviço que autoriza o Catálogo do Unity a acessar o caminho de localização da tabela.
  • Um local externo que referencia a credencial de armazenamento recém-criada e o caminho para os dados no seu locatário de nuvem.
  • Permissão CREATE EXTERNAL TABLE nos locais externos das tabelas a serem atualizadas.

Processo de atualização

Para atualizar uma tabela externa:

  1. Clique no Ícone do catálogoCatálogo na barra lateral para abrir o Explorador de catálogos.

  2. Selecione o banco de dados e a tabela que deseja atualizar.

  3. Clique na ação Atualizar no canto superior direito do modo de exibição de detalhes da tabela.

  4. Selecione a tabela a ser atualizada e clique em Avançar.

  5. Selecione o catálogo de destino, o esquema (banco de dados) e o proprietário.

    Os usuários poderão acessar a tabela recém-criada no contexto de seus privilégios no catálogo e esquema.

    Os proprietários de tabela têm todos os privilégios na tabela, incluindo SELECT e MODIFY. Se você não selecionar um proprietário, a tabela gerenciadas é criada com você como o proprietário. O Databricks geralmente recomenda que você conceda a propriedade da tabela aos grupos. Para saber mais sobre a propriedade de objetos no Catálogo do Unity, confira Gerenciar a propriedade do objeto Catálogo do Unity.

  6. Clique na ação Atualizar no canto superior direito do modo de exibição de detalhes da tabela.

  7. Selecione a tabela a ser atualizada e clique em Avançar.

    Os metadados da tabela foram copiados para o Catálogo do Unity e uma nova tabela foi criada. Agora você pode usar a guia Permissões para definir o controle de acesso refinado.

  8. Use a guia Permissões para definir o controle de acesso refinado.

  9. (Opcional) Adicione um comentário à tabela do Hive que direciona os usuários para a nova tabela do Catálogo do Unity.

    Retorne à tabela original no catálogo hive.metastore para adicionar o comentário da tabela.

    Se você usar a sintaxe a seguir no comentário da tabela, notebooks e consultas do editor de consultas SQL que fazem referência à tabela do Hive preterida exibirão o nome da tabela preterida usando texto tachado, exibirão o comentário como um aviso e fornecerão um link de Correção Rápida para o Assistente do Databricks, que pode atualizar seu código para referenciar a nova tabela.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consulte Adicionar comentários para indicar que uma tabela do Hive foi migrada.

  10. Modifique as cargas de trabalho existentes para usar a nova tabela.

    Se você adicionou um comentário à tabela original do Hive, como a listada na etapa opcional anterior, poderá usar o link Correção Rápida e o Assistente do Databricks para ajudar você a encontrar e modificar cargas de trabalho.

    Observação

    Se você não precisar mais da tabela antiga, poderá removê-la do metastore do Hive. \Remover uma tabela externa não modifica os arquivos de dados em seu locatário na nuvem.

Atualizar uma tabela do Hive para uma tabela externa do Catálogo do Unity usando SYNC

Você pode usar o comando do SQL SYNC para copiar tabelas externas no metastore do Hive para tabelas externas no Catálogo do Unity. Você pode sincronizar tabelas individuais ou esquemas inteiros.

Você também pode usar SYNC para copiar tabelas gerenciadas do Hive que estão armazenadas fora do armazenamento do workspace do Databricks (às vezes chamado de raiz do DBFS) para tabelas externas no Catálogo do Unity. Você não pode usá-lo para copiar tabelas gerenciadas do Hive armazenadas no armazenamento do workspace. Para copiar essas tabelas, use CREATE TABLE CLONE em vez disso.

O comando SYNC executa uma operação de gravação em cada tabela de origem que ele atualiza para adicionar propriedades de tabela adicionais para a contabilidade, incluindo um registro da tabela externa do Catálogo do Unity de destino.

SYNC também poderá ser usado para atualizar as tabelas existentes do Catálogo do Unity quando as tabelas de origem no metastore do Hive forem alteradas. Isso o torna uma boa ferramenta para fazer a transição para o Catálogo do Unity gradualmente.

Para obter detalhes, consulte SYNC. Para obter ajuda para decidir quando usar o assistente de atualização, consulte as opções de migração do Hive para Catálogo do Unity.

Requisitos

Requisitos de formato de dados:

Requisitos de computação:

  • Um recurso de computação que dá suporte ao Catálogo do Unity. Consulte Antes de começar.

Requisitos de permissão e objeto do Catálogo do Unity:

  • Uma credencial de armazenamento para uma identidade gerenciada do Azure ou entidade de serviço que autoriza o Catálogo do Unity a acessar o caminho de localização das tabelas.
  • Um local externo que referencia a credencial de armazenamento recém-criada e o caminho para os dados no seu locatário de nuvem.
  • Permissão CREATE EXTERNAL TABLE nos locais externos das tabelas a serem atualizadas.

Requisitos de acesso à tabela do Hive:

  • Se a computação usar o modo de acesso compartilhado, você precisará de acesso às tabelas no metastore do Hive, concedido usando o controle de acesso de tabela herdado. Consulte Antes de começar.

Processo de atualização

Para atualizar tabelas em seu metastore do Hive para tabelas externas do Catálogo do Unity usando SYNC:

  1. Execute um dos seguintes em um notebook ou no editor de SQL do Databricks:

    Sincronize uma tabela externa do Hive:

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    Sincronize um esquema externo do Hive e todas as respectivas tabelas:

    SYNC SCHEMA <uc-catalog>.<new-schema> FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    

    Sincronize uma tabela gerenciada do Hive armazenada fora do armazenamento do workspace do Databricks:

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> AS EXTERNAL FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    Sincronize um esquema que contém tabelas gerenciadas do Hive armazenadas fora do armazenamento do workspace do Databricks:

    SYNC SCHEMA <uc-catalog>.<new-schema> AS EXTERNAL FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    
  2. Permita aos usuários ou aos grupos na conta o acesso à nova tabela. Consulte Gerenciar privilégios no Catálogo do Unity.

  3. (Opcional) Adicione um comentário à tabela original do Hive que direciona os usuários para a nova tabela do Catálogo do Unity.

    Retorne à tabela original no catálogo hive.metastore para adicionar o comentário da tabela. Para saber como adicionar comentários de tabela usando o Gerenciador de Catálogos, consulte Adicionar comentários de markdown a objetos de dados usando o Gerenciador de Catálogos. Para saber como adicionar comentários de tabela usando instruções SQL em um notebook ou no editor de consultas SQL, consulte COMMENT ON.

    Se você usar a sintaxe a seguir no comentário da tabela, notebooks e consultas do editor de consultas SQL que fazem referência à tabela do Hive preterida exibirão o nome da tabela preterida usando texto tachado, exibirão o comentário como um aviso e fornecerão um link de Correção Rápida para o Assistente do Databricks, que pode atualizar seu código para referenciar a nova tabela.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consulte Adicionar comentários para indicar que uma tabela do Hive foi migrada.

  4. Depois que a tabela for migrada, os usuários deverão atualizar as consultas e as cargas de trabalho existentes para usar a nova tabela.

    Se você adicionou um comentário à tabela original do Hive, como a listada na etapa opcional anterior, poderá usar o link Correção Rápida e o Assistente do Databricks para ajudar você a encontrar e modificar cargas de trabalho.

  5. Antes de remover a tabela antiga, faça um teste para verificar se há dependências revogando o acesso a ela e executando novamente as consultas e as cargas de trabalho relacionadas.

    Não remova a tabela antiga se você ainda estiver contando com comentários de substituição como auxílio para encontrar e atualizar o código existente que faz referência à tabela antiga. Da mesma forma, não remova a tabela antiga se essa tabela tiver sido alterada desde a sincronização original: SYNC pode ser usada para atualizar as tabelas existentes do Catálogo do Unity com alterações das tabelas de origem do Hive.

Atualizar uma tabela gerenciada do Hive para uma tabela gerenciada do Catálogo do Unity usando CLONE

Use CREATE TABLE CLONE para atualizar tabelas gerenciadas no metastore do Hive para tabelas gerenciadas no Catálogo do Unity. Você pode clonar tabelas individuais. Clones profundos copiam dados da tabela de origem para o destino de clonagem, além dos metadados de tabela existentes. Use um clone profundo se você pretende remover a tabela de origem do Hive. Clones superficiais não copiam os arquivos de dados para o destino de clonagem, mas dão acesso a eles por referência aos dados de origem: os metadados da tabela são equivalentes à origem. Clones superficiais são mais baratos de criar, mas exigem que os usuários que consultam dados no destino de clonagem também tenham acesso aos dados de origem.

Para obter ajuda para decidir quando usar CLONE, consulte as opções de migração do Hive para o Catálogo do Unity. Para obter ajuda para decidir qual tipo de clone usar, consulte Clonar uma tabela no Azure Databricks.

Requisitos

Requisitos de formato de dados:

Requisitos de computação:

  • Um recurso de computação que dá suporte ao Catálogo do Unity. Consulte Antes de começar.

Requisitos de permissão:

  • Os privilégios USE CATALOG e USE SCHEMA no catálogo e no esquema aos quais você adiciona a tabela, juntamente com CREATE TABLE no esquema, ou você precisa ser o proprietário do catálogo ou esquema. Confira Privilégios e objetos protegíveis do Catálogo do Unity.
  • Se a computação usar o modo de acesso compartilhado, você precisará de acesso às tabelas no metastore do Hive, concedido usando o controle de acesso de tabela herdado. Consulte Antes de começar.

Processo de atualização

Para atualizar tabelas gerenciadas em seu metastore do Hive para tabelas gerenciadas no Catálogo do Unity:

  1. Execute um dos seguintes em um notebook ou no editor de SQL do Databricks:

    Crie um clone profundo de uma tabela gerenciada no metastore do Hive:

    CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
    DEEP CLONE hive_metastore.<source-schema>.<source-table>;
    

    Crie um clone superficial de uma tabela gerenciada no metastore do Hive:

    CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
    SHALLOW CLONE hive_metastore.<source-schema>.<source-table>;
    

    Para obter informações sobre parâmetros adicionais, incluindo as propriedades da tabela, consulte CREATE TABLE CLONE.

  2. Permita aos usuários ou aos grupos na conta o acesso à nova tabela. Consulte Gerenciar privilégios no Catálogo do Unity.

  3. (Opcional) Adicione um comentário à tabela original do Hive que direciona os usuários para a nova tabela do Catálogo do Unity.

    Retorne à tabela original no catálogo hive.metastore para adicionar o comentário da tabela. Para saber como adicionar comentários de tabela usando o Gerenciador de Catálogos, consulte Adicionar comentários de markdown a objetos de dados usando o Gerenciador de Catálogos. Para saber como adicionar comentários de tabela usando instruções SQL em um notebook ou no editor de consultas SQL, consulte COMMENT ON.

    Se você usar a sintaxe a seguir no comentário da tabela, notebooks e consultas do editor de consultas SQL que fazem referência à tabela do Hive preterida exibirão o nome da tabela preterida usando texto tachado, exibirão o comentário como um aviso e fornecerão um link de Correção Rápida para o Assistente do Databricks, que pode atualizar seu código para referenciar a nova tabela.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consulte Adicionar comentários para indicar que uma tabela do Hive foi migrada.

  4. Depois que a tabela for migrada, os usuários deverão atualizar as consultas e as cargas de trabalho existentes para usar a nova tabela.

    Se você adicionou um comentário à tabela original do Hive, como a listada na etapa opcional anterior, poderá usar o link Correção Rápida e o Assistente do Databricks para ajudar você a encontrar e modificar cargas de trabalho.

  5. Antes de remover a tabela antiga, faça um teste para verificar se há dependências revogando o acesso a ela e executando novamente as consultas e as cargas de trabalho relacionadas.

    Não remova a tabela antiga se você ainda estiver contando com comentários de substituição como auxílio para encontrar e atualizar o código existente que faz referência à tabela antiga. Da mesma forma, não remova a tabela antiga se você executou uma clonagem superficial. Clones superficiais referenciam dados da tabela do Hive de origem.

Atualizar uma tabela do Hive para uma tabela gerenciada do Catálogo do Unity usando CREATE TABLE AS SELECT

Se você não puder usar ou preferir não usar CREATE TABLE CLONE para migrar uma tabela no metastore do Hive para uma tabela gerenciada no Catálogo do Unity, poderá criar uma tabela gerenciada no Catálogo do Unity consultando a tabela do Hive usando CREATE TABLE AS SELECT. Para obter informações sobre as diferenças entre CREATE TABLE CLONE e CREATE TABLE AS SELECT, consulte as opções de migração do Hive para o Catálogo do Unity.

Requisitos

Requisitos de computação:

  • Um recurso de computação que dá suporte ao Catálogo do Unity. Consulte Antes de começar.

Requisitos de permissão:

  • Os privilégios USE CATALOG e USE SCHEMA no catálogo e no esquema aos quais você adiciona a tabela, juntamente com CREATE TABLE no esquema, ou você precisa ser o proprietário do catálogo ou esquema. Confira Privilégios e objetos protegíveis do Catálogo do Unity.
  • Se a computação usar o modo de acesso compartilhado, você precisará de acesso às tabelas no metastore do Hive, concedido usando o controle de acesso de tabela herdado. Consulte Antes de começar.

Processo de atualização

Para atualizar uma tabela no metastore do Hive para uma tabela gerenciada no Catálogo do Unity usando CREATE TABLE AS SELECT:

  1. Crie uma tabela do Catálogo do Unity consultando a tabela existente. Substitua os valores de espaço reservado:

    • <uc-catalog>: o catálogo do Catálogo do Unity para a nova tabela.
    • <uc-schema>: o esquema do Catálogo do Unity para a nova tabela.
    • <new-table>: um nome para a tabela do Catálogo do Unity.
    • <source-schema>: o esquema da tabela do Hive, como default.
    • <source-table>: o nome da tabela do Hive.

    SQL

    CREATE TABLE <uc-catalog>.<new-schema>.<new-table>
    AS SELECT * FROM hive_metastore.<source-schema>.<source-table>;
    

    Python

    df = spark.table("hive_metastore.<source-schema>.<source-table>")
    
    df.write.saveAsTable(
      name = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    R

    %r
    library(SparkR)
    
    df = tableToDF("hive_metastore.<source-schema>.<source-table>")
    
    saveAsTable(
      df = df,
      tableName = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    Scala

    val df = spark.table("hive_metastore.<source-schema>.<source-table>")
    
    df.write.saveAsTable(
      tableName = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    Caso deseje migrar apenas algumas colunas ou linhas, modifique a instrução SELECT.

    Observação

    Os comandos apresentados aqui criam uma tabela gerenciada na qual os dados são copiados para um local de armazenamento gerenciado dedicado. Se, em vez disso, você quiser criar uma tabela externa, em que a tabela está registrada no Catálogo do Unity sem mover os dados no armazenamento em nuvem, consulte Atualizar uma tabela do Hive para uma tabela externa do Catálogo do Unity usando o assistente de atualização. Consulte também Especificar um local de armazenamento gerenciado no catálogo do Unity.

  2. Permita aos usuários ou aos grupos na conta o acesso à nova tabela. Consulte Gerenciar privilégios no Catálogo do Unity.

  3. (Opcional) Adicione um comentário à tabela original do Hive que direciona os usuários para a nova tabela do Catálogo do Unity.

    Retorne à tabela original no catálogo hive.metastore para adicionar o comentário da tabela. Para saber como adicionar comentários de tabela usando o Gerenciador de Catálogos, consulte Adicionar comentários de markdown a objetos de dados usando o Gerenciador de Catálogos. Para saber como adicionar comentários de tabela usando instruções SQL em um notebook ou no editor de consultas SQL, consulte COMMENT ON.

    Se você usar a sintaxe a seguir no comentário da tabela, notebooks e consultas do editor de consultas SQL que fazem referência à tabela do Hive preterida exibirão o nome da tabela preterida usando texto tachado, exibirão o comentário como um aviso e fornecerão um link de Correção Rápida para o Assistente do Databricks, que pode atualizar seu código para referenciar a nova tabela.

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    Consulte Adicionar comentários para indicar que uma tabela do Hive foi migrada.

  4. Depois que a tabela for migrada, os usuários deverão atualizar as consultas e as cargas de trabalho existentes para usar a nova tabela.

    Se você adicionou um comentário à tabela original do Hive, como a listada na etapa opcional anterior, poderá usar o link Correção Rápida e o Assistente do Databricks para ajudar você a encontrar e modificar cargas de trabalho.

  5. Antes de remover a tabela antiga, faça um teste para verificar se há dependências revogando o acesso a ela e executando novamente as consultas e as cargas de trabalho relacionadas.

    Não remova a tabela antiga se você ainda estiver contando com comentários de substituição como auxílio para encontrar e atualizar o código existente que faz referência à tabela antiga.

Atualizar uma exibição no Catálogo do Unity

Depois de atualizar todas as tabelas referenciadas de uma exibição no mesmo metastore do Catálogo do Unity, você poderá criar uma exibição que referencie as novas tabelas.

Adicionar comentários para indicar que uma tabela do Hive foi migrada

Quando você adicionar um comentário à tabela preterida do Hive que direciona os usuários para a nova tabela do Catálogo do Unity, os notebooks e as consultas do editor de consultas SQL que fazem referência à tabela preterida do Hive exibirão o nome da tabela preterida usando texto tachado, exibirão o comentário como um aviso e fornecerão um link de Correção Rápida para o Assistente do Databricks, que pode atualizar seu código para referenciar a nova tabela.

Aviso de substituição da tabela do Hive

Seu comentário precisa usar o seguinte formato:

This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.

Para saber como adicionar comentários de tabela usando o Gerenciador de Catálogos, consulte Adicionar comentários de markdown a objetos de dados usando o Gerenciador de Catálogos. Para saber como adicionar comentários de tabela usando instruções SQL em um notebook ou no editor de consultas SQL, consulte COMMENT ON.

Usar o Assistente do Databricks para atualizar uma referência de tabela preterida

Se você vir um texto tachado em um nome de tabela em uma célula de notebook ou instrução no editor de consultas SQL, passe o mouse sobre o nome da tabela para revelar um aviso. Se esse aviso descrever a tabela como preterida e exibir o novo nome da tabela, clique em Correção Rápida, seguido de Correção de Substituição. O Assistente do Databricks é aberto, oferecendo substituir o nome da tabela preterida pelo novo nome da tabela do Catálogo do Unity. Siga as instruções para concluir a tarefa.

Vídeo mostrando a atualização da tabela do Hive usando o Assistente do Databricks

Confira também Usar o Assistente do Databricks.