Pular para o conteúdo principal

Objetos de banco de dados no legado Hive metastore

A documentação da Databricks concentra-se no trabalho com objetos de dados usando Unity Catalog, mas a maioria das instruções também se aplica ao trabalho com objetos registrados no legado Hive metastore.

Este artigo se concentra em como trabalhar com objetos de banco de dados registrados no legado Hive metastore. Especificamente, este artigo destaca onde o trabalho com objetos Hive metastore difere do trabalho com objetos Unity Catalog. Também descreve outros comportamentos que podem ser inesperados.

Databricks O senhor recomenda a migração de todos os dados do site legado Hive metastore para Unity Catalog. Consulte Upgrade Hive tables and view to Unity Catalog.

Como funciona o site Hive metastore governança de dados?

Embora o espaço de trabalho Databricks continue a incluir o Hive metastore integrado, a governança de dados usando o Hive metastore está obsoleta. A Databricks recomenda que o senhor use o Unity Catalog para toda a governança de dados. Consulte Trabalhar com Unity Catalog e o legado Hive metastore.

A ativação de um workspace para Unity Catalog não reduz sua capacidade de trabalhar com dados já registrados em Hive metastore. Todos os objetos de dados registrados no legado Hive metastore são exibidos em interfaces Unity Catalog no catálogo hive_metastore. Um híbrido Hive metastore e Unity Catalog workspace pode ser um modelo útil para a transição de um site de longa data Hive metastore workspace. No entanto, as vantagens de governança de dados e desempenho do Unity Catalog são grandes, e o senhor deve fazer a transição completa do seu espaço de trabalho assim que possível.

Hive metastore usa o controle de acesso da tabela (ACLs de tabela) para gerenciar o acesso aos objetos do banco de dados. Permanece algum suporte para o controle de acesso da tabela quando o senhor usa compute no modo de acesso padrão. Consulte Hive metastore controle de acesso da tabela (legado).

nota

Quando este artigo se refere ao controle de acesso a dados em Hive metastore, ele se refere ao controle de acesso ao legado da tabela.

O que é o catálogo hive_metastore?

Em um workspace habilitado para Unity Catalog, todos os esquemas no Hive metastore aparecem como filhos do catálogo hive_metastore no namespace de três níveis Unity Catalog. Hive metastore na verdade, não usa catálogos, e essa construção fornece um ponto de entrada para tabelas no site legado Hive metastore para usuários do Unity Catalog. Use a seguinte sintaxe para consultar tabelas no site legado Hive metastore:

SQL
SELECT * FROM hive_metastore.schema_name.table_name
nota

Opcionalmente, o senhor pode definir o catálogo hive_metastore como workspace default no espaço de trabalho habilitado para o Unity Catalog. Consulte gerenciar o catálogo default.

Esquemas em Hive metastore

No site legado Hive metastore, um esquema é o nível mais alto na hierarquia de objetos de dados.

Existem algumas diferenças importantes entre Unity Catalog e Hive metastore, incluindo as seguintes:

  • O senhor não pode criar esquemas no site Hive metastore usando o Catalog Explorer. O senhor pode view e editar permissões para esquemas.
  • Os esquemas criados no site Hive metastore podem usar apenas caracteres ASCII alfanuméricos e sublinhados em seus nomes.
  • Hive metastore permite que o senhor declare um LOCATION para um esquema durante a criação. Isso funciona de forma semelhante aos locais de armazenamento do gerenciador Unity Catalog, com as seguintes diferenças de comportamento:
    • Se o senhor não fornecer um local, será usado o local default /user/hive/warehouse/<schema-name>. Esse local está em DBFS root, o que não é recomendado para armazenar dados de produção.
    • O caminho fornecido pode ser qualquer local de armazenamento em nuvem disponível para o usuário que cria o esquema, inclusive URIs de nuvem, DBFS root e montagens DBFS.
    • O acesso ao local não é gerenciado pelo site Hive metastore.
    • A exclusão de um esquema no site Hive metastore faz com que todos os arquivos nesse local de esquema sejam excluídos recursivamente, independentemente do tipo de tabela (gerenciar ou externa).

Para evitar a perda acidental de dados, o site Databricks recomenda o seguinte quando o senhor trabalha com os locais do esquema Hive metastore:

  • Não atribua um local de esquema que já contenha dados.
  • Não crie uma tabela externa em um local do esquema.
  • Não compartilhe um local entre vários esquemas.
  • Não atribua uma localização do esquema que se sobreponha a outra localização do esquema. Em outras palavras, não use um caminho que seja filho de outro local do esquema.
  • Não atribua uma localização do esquema que se sobreponha à localização de uma tabela externa.

gerenciar tabelas em Hive metastore

Gerenciar tabelas em Hive metastore não tem nenhum dos benefícios de desempenho de gerenciar tabelas em Unity Catalog. Assim como as tabelas gerenciar Unity Catalog, as tabelas gerenciar Hive metastore usam Delta Lake por default. No entanto, em Hive metastore, diferentemente de Unity Catalog, o senhor também pode criar uma tabela gerenciar usando a maioria dos outros formatos de dados compatíveis com Databricks.

As tabelas gerenciar em Hive metastore são sempre criadas no local de armazenamento do esquema que as contém. O site compute que o senhor usa para consultar uma tabela gerenciar deve ter acesso ao local de armazenamento.

Hive metastore não gerencia a disposição de dados das tabelas de gerenciar da mesma forma que o Unity Catalog. Quando o senhor solta uma tabela gerenciar em Hive metastore, todos os arquivos de dados subjacentes são excluídos imediatamente. Em Unity Catalog, por outro lado, o senhor pode UNDROP gerenciar uma tabela por 7 dias, e os dados são excluídos permanentemente em 30 dias.

O senhor pode usar o acesso baseado em caminho para ler ou gravar dados em Hive metastore gerenciar tabelas, enquanto em Unity Catalog não pode e não precisa.

Tabelas externas em Hive metastore

A maioria das tabelas criadas no site Databricks antes da introdução do site Unity Catalog foi configurada como tabelas externas no site Hive metastore. As recomendações antigas que favoreciam as tabelas externas geralmente se concentravam em alguns aspectos key:

  • O senhor poderia registrar uma tabela externa sobre os dados existentes no armazenamento de objetos na nuvem.
  • Você pode acessar diretamente arquivos de dados em tabelas externas de sistemas externos para leituras ou gravações.
  • Os arquivos de dados não eram excluídos se a tabela fosse descartada acidentalmente.
  • Como as tabelas externas exigem um LOCATION, era menos provável que os dados de produção acabassem acidentalmente no site DBFS root.

Databricks agora recomenda Unity Catalog gerenciar tabelas para a maior parte do armazenamento de dados tabulares. Consulte Trabalhar com tabelas gerenciais.

ver em Hive metastore

O senhor pode declarar um view em Hive metastore apoiado por qualquer fonte de dados suportada por Databricks. Em Unity Catalog, o senhor só pode declarar a visualização em relação às tabelas e à visualização Unity Catalog, incluindo tabelas estrangeiras, visualização materializada e tabelas Delta Sharing.

Devido à capacidade de declarar a visualização em relação a fontes de dados não tabulares, a visualização em Hive metastore pode conceder acesso inesperado ou não intencional aos dados em combinação com outras configurações de acesso no ambiente do usuário.

Por exemplo, considere o seguinte:

  • Uma tabela my_table é definida usando o caminho de montagem DBFS /mnt/my_table.

    • DBFS As credenciais de montagem são armazenadas no site workspace, de modo que todos os usuários têm acesso a esse caminho pelo site default.
  • As ACLs de tabela são usadas para restringir o acesso a my_table a um grupo de usuários.

    • As ACLs de tabela herdadas só se aplicam a compute configurado com o modo de acesso padrão ou ao depósito SQL.
  • Um view my_view é definido diretamente em relação ao URI da nuvem que faz o backup dos mesmos arquivos de dados 'gs://bucket/path/to/my_table'.

    • As credenciais de URI dependem das políticas de acesso definidas na sessão Spark ou na configuração compute.

O site view my_view tem as seguintes propriedades:

  • Ele não usa as credenciais de montagem DBFS usadas para montar o armazenamento de objetos na nuvem em /mnt/my_table.
  • Ele não respeita as ACLs de tabela definidas em my_table, independentemente das configurações de compute.
  • Ele requer uma política de acesso a dados configurada para compute que forneça acesso de leitura a 'gs://bucket/path/to/my_table'.
nota

Esse é um exemplo de comportamento inesperado que o senhor pode encontrar e não abrange todas as possíveis armadilhas apresentadas pela visualização no site legado Hive metastore. Databricks recomenda usar Unity Catalog para todas as definições de view.

Tabelas herdadas do Hive e suporte ao HiveQL

O Databricks inclui algum suporte legado para tabelas Hive e funcionalidade HiveQL. Essa funcionalidade é um resquício das primeiras versões do Databricks e do ecossistema Apache Hadoop de ferramentas. Databricks não recomenda o uso de tabelas Hive ou outra funcionalidade Hive, pois essa funcionalidade não é otimizada e não tem suporte em algumas configurações compute.

Os artigos a seguir descrevem a funcionalidade herdada do Hive: