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. Ele 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 de 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. Ainda há algum suporte para o controle de acesso da tabela quando o senhor usa compute no modo de acesso compartilhado. Consulte Hive metastore controle de acesso da tabela (legado).

Observação

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:

SELECT * FROM hive_metastore.schema_name.table_name

Observação

Opcionalmente, o senhor pode definir o catálogo hive_metastore como workspace default no espaço de trabalho habilitado para o Unity Catalog. Veja como 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 cloud disponível para o usuário que cria o esquema, incluindo cloud URIs, DBFS root e DBFS mounts.

    • 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 de esquema.

  • Não compartilhe um local entre vários esquemas.

  • Não atribua um local de esquema que se sobreponha a outro local de esquema. Em outras palavras, não use um caminho que seja filho de outro local de esquema.

  • Não atribua uma localização de 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 utiliza 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 cloud.

  • O senhor pode acessar diretamente os 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 compartilhado ou ao depósito SQL.

  • Um view my_view é definido diretamente contra o URI cloud 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 cloud em /mnt/my_table.

  • Ele não respeita as ACLs de tabela definidas em my_table, independentemente das configurações de compute.

  • Isso requer uma política de acesso a dados configurada para compute que forneça acesso de leitura a 'gs://bucket/path/to/my_table'.

Observação

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: