Comparação entre Tabelas Internas da Colmeia vs Tabelas Externas

Curious para conhecer os diferentes tipos de tabelas da Colmeia e como são diferentes umas das outras?

Como discutimos os conceitos básicos das tabelas da Colmeia nos Modelos de Dados da Colmeia, vamos agora explorar a maior diferença entre as tabelas internas e externas da Colmeia.

Neste artigo, vamos discutir os dois tipos diferentes de Tabelas da Colmeia que são Tabelas Internas (Tabelas Geridas) e Tabelas Externas. O artigo enumera em seguida as diferenças entre as tabelas internas e externas da colmeia. Veremos também diferentes casos em que podemos utilizar estas tabelas da Colmeia.

>

Então, vamos começar com as tabelas internas da Colmeia e as tabelas externas.

Fique actualizado com as últimas tendências tecnológicas
Join DataFlair on Telegram!!

Introdução às tabelas internas e externas da Colmeia

tabelas internas e externas da Colmeia

>

Fundamentalmente, a Colmeia conhece dois tipos diferentes de tabelas: Mesa Interna e Mesa Externa. A tabela Interna também é conhecida como a tabela gerida.

>

Podemos identificar as tabelas internas ou Externas utilizando a declaração DESCRIBE FORMATTED table_name da Colmeia, que apresentará ou MANAGED_TABLE ou EXTERNAL_TABLE dependendo do tipo de tabela.

Tabela Interna da Colmeia

A colmeia é proprietária dos dados das tabelas internas.

É a tabela por defeito da Colmeia. Quando o utilizador cria uma tabela na Colmeia sem a especificar como externa, então por defeito, é criada uma tabela interna num local específico no HDFS.

Por defeito, é criada uma tabela interna num caminho de pasta semelhante a /user/hive/warehouse directory do HDFS. Podemos substituir a localização padrão pela propriedade de localização durante a criação da tabela.

Se abandonarmos a tabela gerenciada ou partição, os dados da tabela e os metadados associados a essa tabela serão excluídos do HDFS.

Tabela externa da colmeia

A colmeia não gerencia os dados da tabela externa.

Criamos uma tabela externa para uso externo como quando queremos usar os dados fora da colmeia.

As tabelas externas são armazenadas fora do diretório do depósito. Elas podem aceder aos dados armazenados em fontes como as localizações remotas HDFS ou os volumes de armazenamento Azure.

Quando deixamos cair a tabela externa, então apenas os metadados associados à tabela serão eliminados, os dados da tabela permanecem intocados pela Colmeia.

>

Podemos criar a tabela externa especificando a palavra-chave EXTERNAL na declaração Hive create table statement.

Diferença entre a tabela interna e externa da Hive

>colmeia tabelas internas e externas-colmeia tabelas internas e externas

Deixe-nos agora ver a diferença entre as duas tabelas da Hive. As maiores diferenças entre as tabelas internas e externas da Colmeia são:

Semântica de carga

A semântica de carga varia em ambas as tabelas. Vejamos a diferença na semântica de carga entre a tabela interna e a externa.

a. Tabela Interna

Quando carregamos dados numa tabela interna, então a Colmeia move os dados para o directório do armazém.

Por exemplo:

Aqui neste exemplo, estamos a criar uma tabela ‘internaldemo’. Quando carregamos os dados na tabela ‘internaldemo’, então a Colmeia move os dados para o directório do armazém.

>

Aprender Instalação da Colmeia Apache no Ubuntu para executar as consultas da Colmeia.

>

criar tabela interna - tabela interna e externa da Colmeia

>

Agora, carregando os dados na tabela interna criada acima. Carregar dados na tabela interna - tabelas internas e externas da colmeia

Na descrição da tabela, vemos que os dados da tabela são deslocados para o directório do armazém da colmeia.descrever tabela interna - tabelas internas e externas da colmeia

b. Tabela externa

Com a palavra-chave EXTERNAL, a Colmeia sabe que não está a gerir os dados da tabela, pelo que não move os dados para o seu directório de armazém. A colmeia não verifica sequer se a localização externa no momento em que é definida existe ou não.

Por exemplo:

Neste exemplo, estamos a criar uma tabela externa, ‘external_demo’ na localização especificada que é ‘/home/dataflair/’. Ao carregar os dados na tabela externa, a colmeia não move os dados da tabela para o seu directório de armazém.

>criar tabela externa - tabelas internas e externas da colmeia

>

Agora, carregando os dados para a tabela externa criada acima. Carregar dados na tabela externa - tabelas internas e externas da colmeia

>

Na navegação da tabela, podemos ver que os dados da tabela da colmeia não são deslocados para o directório do armazém da colmeia. Os dados são armazenados no local especificado durante a criação de uma tabela.descrever tabela externa - tabelas internas e externas da colmeia

Semântica DROP

Semântica de carga, a semântica de queda também varia em ambas as tabelas. Vejamos a diferença na semântica de queda entre a tabela interna e a externa.

a. Tabela interna

Sair da tabela interna irá apagar os dados da tabela, assim como os metadados associados à tabela.

Por exemplo:

Neste exemplo, estamos deixando cair a tabela gerenciada ‘internaldemo’. Você pode ver que ele irá apagar tanto os metadados da tabela como os dados da tabela.

>

drop internal table - hive internal and external tables

locating hive internal table - hive internal and external tables

Table data also gets deleted from the HDFS.

b. Tabela externa

>

Soltando a tabela externa serão apagados apenas os metadados da tabela. O conteúdo da tabela permanece intocado.

Por exemplo:

Neste exemplo, podemos ver que ao excluir a tabela externa ‘demo externa’, o conteúdo da tabela ainda está presente no local do HDFS.

>

>droping external table - hive tables

>

localizando a tabela externa - hive tables

>

Suporte de truncamento

>

O comando TRUNCATE só funciona para a tabela interna.

>

Por exemplo:

>

Neste exemplo, estamos tentando usar o comando truncado com a tabela ‘externaldemo’. Receberemos uma mensagem de erro que diz ‘Cannot truncate non-managed table externaldemo’.

truncate external table - hive tables

ACID Support

ACID/transactional works only for the internal table.

ACID/transactional works for the internal table. Não funcionam para a External Table.

Caching de Resultados da Colmeia

Caching de Resultados da Colmeia que guarda os resultados de uma consulta da Colmeia executada para reutilização nas consultas seguintes apenas funciona para a tabela interna.

Estão algumas diferenças entre a tabela interna da Colmeia e a tabela externa.

Deixe-nos agora ver quando utilizar qual a tabela da Colmeia.

Quando utilizar a tabela Interna e Externa?

Tabela Interna da Colmeia

Podemos utilizar a tabela interna nos casos:

  • Ao gerar tabelas temporárias.
  • Quando é necessário que a Colmeia administre o ciclo de vida da tabela.
  • E quando não queremos os dados da tabela após a sua eliminação.

Tabela externa da colmeia

Podemos utilizar a tabela externa nos casos:

  • Quando não estamos a criar a tabela baseada na tabela existente.
  • Quando é necessário utilizar os dados fora da colmeia. Por exemplo, os ficheiros de dados são lidos e processados por um programa existente que não bloqueia os ficheiros.
  • Quando não queremos apagar completamente os dados da tabela mesmo depois do DROP.
  • Quando os dados não devem ser próprios da Colmeia.

Então, tudo isto foi feito em tabelas internas e externas da Colmeia. Espero que gostem da nossa explicação.

Conclusão

Após a leitura do artigo, podemos concluir que as tabelas da Colmeia são de dois tipos – tabela interna, também conhecida como tabela gerida, e a tabela Externa.

Os dados da tabela interna são geridos pela Colmeia. A Colmeia não é responsável pela gestão dos dados da tabela Externa.

Apagando a tabela interna da Colmeia, os dados da tabela e os metadados são ambos apagados e ao apagar a tabela Externa da Colmeia, apenas os metadados da tabela serão apagados.

>

Veja também-

  • Diferentes formas de configurar os metadados da colmeia
  • Melhor livro Apache da colmeia para principiantes

Ainda consulta durante o trabalho com os quadros interno e externo da colmeia? Pergunte abaixo.

>

Aprender!!

Deixe uma resposta

O seu endereço de email não será publicado.