Hive: Criar tabela: interna, alterar e excluir com exemplos

⚡ Resumo Inteligente

Criar, alterar e soltarping As tabelas no Apache Hive usam DDL no estilo SQL, mas o resultado depende se a tabela é interna, ou seja, de propriedade do Hive, ou externa, que apenas descreve arquivos.

  • 🧱 CRIAR A TABELA: Uma única instrução define as colunas, o formato das linhas e, opcionalmente, o local de armazenamento de uma tabela Hive.
  • 🏷️ ALTERAR A TABELA: RENAME altera o nome da tabela, e ADD COLUMNS ou CHANGE COLUMN editam o esquema sem recarregar os dados.
  • 🗑️ DROP TABLE: Cairping Uma tabela interna exclui tanto o esquema quanto os dados, enquanto o comando drop exclui.ping Uma tabela externa remove apenas os metadados.
  • 🔒 O conteúdo interno é de propriedade de: Uma tabela interna ou gerenciada reside no diretório do data warehouse e o Hive controla todo o seu ciclo de vida.
  • 🔗 A referência externa é: Uma tabela externa aponta para arquivos que outras ferramentas também leem, portanto esses arquivos sobrevivem à exclusão.
  • 🔎 Verifique o tipo: DESCRIBE FORMATTED reports MANAGED_TABLE or EXTERNAL_TABLE, which elimina qualquer necessidade de adivinhação antes de uma exclusão.

Comandos Hive para criar, alterar e excluir tabelas com exemplos.

Operações em tabelas, como criação, alteração e exclusão.ping Neste passo a passo, você poderá observar as tabelas no Hive. Cada operação é demonstrada primeiro como uma sessão ao vivo e, em seguida, como uma instrução reutilizável.

Como criar, alterar e excluir uma tabela no Hive

Na captura de tela abaixo, estamos criando uma tabela com colunas e alterando o nome da tabela.

  1. Criando a tabela guru_sample com duas colunas chamadas “empid” e “empname”.
  2. Exibindo as tabelas presentes no banco de dados guru99
  3. guru_sample exibido em tabelas
  4. Alterando a tabela “guru_sample” para “guru_sampleNew”
  5. Novamente, ao executar o comando “show”, ele exibirá o novo nome guru_sampleNew.

A sessão abaixo executa todas as cinco etapas em ordem. colmeia> O comando `prompt`, e as duas chamadas `SHOW TABLES` antes e depois da renomeação, tornam o efeito visível.

Sessão do Hive criando guru_sample e renomeando-a para guru_sampleNew.

Cairping tabela guru_sampleNew:

Uma única instrução DROP TABLE remove a tabela renomeada, e o Hive responde com OK.

queda de concha da colmeiaping a tabela guru_sampleNew com uma resposta OK

Sintaxe e cláusulas comuns do comando CREATE TABLE no Hive

O exemplo acima usa a forma mais curta possível. A instrução documentada aceita várias cláusulas opcionais, e cada uma delas decide algo que o exemplo deixa com seu valor padrão.

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  [(col_name data_type [COMMENT col_comment], ...)]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type, ...)]
  [CLUSTERED BY (col_name, ...) INTO num_buckets BUCKETS]
  [ROW FORMAT row_format]
  [STORED AS file_format]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)];
Cláusula O que ele controla
EXTERNO Cria uma tabela externa, portanto o comando DROP mantém os arquivos de dados no local.
TEMPORÁRIO Cria uma tabela com escopo de sessão que desaparece ao término da sessão.
SE NÃO EXISTE Suprime o erro quando já existe uma tabela com esse nome.
PARTICIONADO POR Divide a tabela em um diretório por valor de chave.
AGRUPADOS POR … EM n BALDES Agrupa linhas em um número fixo de arquivos.
FORMATO DA LINHA / ARMAZENADO COMO Define o delimitador ou SerDe e o formato do arquivo, como TEXTFILE, ORC ou Parquet.
LOCALIZAÇÃO Aponta a tabela para um caminho HDFS específico em vez do padrão do warehouse.
TBLPROPERTIES Anexa pares de chave-valor de metadados, incluindo external.table.purge.

Uma forma relacionada, CRIAR TABELA nova_tabela COMO tabela_existente, copia um esquema sem copiar nenhuma linha. Cláusulas estruturais como PARTITIONED BY e CLUSTERED BY são abordadas em detalhes no guia para Divisórias e baldes para colmeias.

Tipos de tabela e seu uso

Em relação às tabelas, o processo é semelhante ao que fazemos em bancos de dados relacionais tradicionais. Funcionalidades como filtragem e junções podem ser realizadas nas tabelas.

O Hive lida com dois tipos de estruturas de tabelas: tabelas internas e externas, dependendo do carregamento e do design do esquema. ColméiaA escolha não é meramente estética: ela decide quem é o proprietário dos arquivos de dados e o que acontece com eles quando a tabela é excluída.

Tabelas internas no Hive

  • A tabela interna é inerentemente acoplada. Nesse tipo de tabela, primeiro precisamos criar a tabela e depois carregar os dados.
  • Podemos chamar isso de dados sobre esquema.
  • Por gotaping Esta tabela, tanto os dados quanto o esquema, será removida.
  • O local armazenado desta tabela será /user/hive/warehouse.
  • As tabelas internas também são chamadas de tabelas gerenciadas, e somente elas suportam as transações TRUNCATE, ARCHIVE, MERGE, CONCATENATE e ACID.

Quando escolher a tabela interna?

  • Se os dados de processamento estiverem disponíveis no sistema de arquivos local
  • Se quisermos que o Hive gerencie o ciclo de vida completo dos dados, incluindo a exclusão

Exemplo de trecho de código para tabela interna

  1. Para criar a tabela interna
     Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
    	 Row format delimited 
    	 Fields terminated by '\t';
  2. Carregue os dados na tabela interna
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
  3. Exibir o conteúdo da tabela
        Hive>select * from guruhive_internaltable;
  4. Para eliminar a tabela interna
        Hive>DROP TABLE guruhive_internaltable;

Se você excluir a tabela interna guruhive_internaltable, seus metadados e dados serão apagados do Hive. A menos que o comando PURGE seja especificado, os arquivos são movidos para a lixeira do HDFS em vez de serem removidos imediatamente.

Na captura de tela a seguir, podemos observar o resultado de todas as quatro instruções em uma única sessão, finalizando com a exclusão bem-sucedida.

Criação, carregamento, consulta e descarte de sessões do Hiveping guruhive_tabela interna

No código acima e conforme a captura de tela, fazemos o seguinte:

  • Crie a tabela interna
  • Carregue os dados na tabela interna
  • Exibir o conteúdo da tabela
  • Para eliminar a tabela interna

Tabelas externas no Hive

  • A tabela externa possui um acoplamento fraco. Os dados estarão disponíveis no HDFS. A tabela será criada com base nos dados do HDFS.
  • Em outras palavras, podemos dizer que está criando um esquema com base nos dados.
  • No momento da quedaping A tabela é excluída, apenas o esquema; os dados continuarão disponíveis no HDFS como antes.
  • Tabelas externas fornecem uma opção para criar vários esquemas para os dados armazenados no HDFS em vez de excluir os dados sempre que o esquema for atualizado
  • A partir do Hive 4.0.0, definir a propriedade da tabela `external.table.purge` como `true` faz com que o comando `DROP` também exclua os dados.

Quando escolher a mesa externa?

  • Se os dados de processamento estiverem disponíveis no HDFS
  • Útil quando os arquivos estão sendo usados ​​fora do Hive

Exemplo de trecho de código para tabela externa

  1. Criar tabela externa
    Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING)
    	 Row format delimited
    	 Fields terminated by '\t'
    	 LOCATION '/user/guru99hive/guruhive_external';
  2. Se não especificarmos a localização no momento da criação da tabela, podemos carregar os dados manualmente.
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
  3. Exibir o conteúdo da tabela
      Hive>select * from guruhive_external;
  4. Para excluir a tabela externa
      Hive>DROP TABLE guruhive_external;

Na captura de tela a seguir, podemos observar a saída. Observe que a ação de soltar no final remove apenas o esquema – o arquivo no caminho LOCATION permanece intacto.

Criação, carregamento, consulta e descarte de sessões do Hiveping guruhive_externo

No código acima, fazemos o seguinte:

  • Crie a tabela externa
  • Carregue os dados na tabela externa
  • Exibir o conteúdo da tabela
  • Cairping tabela externa

Diferença entre tabelas internas e externas

Característica Interno Externo
Esquema Dados no esquema Esquema em dados
Local de armazenamento /user/hive/warehouse Localização HDFS fornecida por LOCATION
Disponibilidade de dados Dentro do sistema de arquivos local Dentro do HDFS
Efeito da QUEDA Exclui o esquema e os dados. Exclui apenas o esquema, a menos que external.table.purge seja verdadeiro.
Suporte a TRUNCATE Suportado Não suportado
Transações ACID Suportado Não suportado

O Documentação do Apache Hive A regra é clara: o Hive assume que possui os dados das tabelas gerenciadas e assume que não os possui para as tabelas externas, e todas as diferenças acima decorrem dessa única premissa.

Referência dos comandos ALTER TABLE e DROP TABLE

As capturas de tela acima mostram apenas uma renomeação e uma exclusão. Essas são as instruções que um profissional utiliza com mais frequência em uma tabela existente.

Declaração Propósito
ALTER TABLE nome_da_tabela RENAME TO novo_nome; Renomeia a tabela; para uma tabela gerenciada, isso também move seu diretório HDFS.
ALTER TABLE nome_da_tabela ADD COLUMNS (nome_da_coluna tipo_de_dados); Acrescenta uma ou mais colunas ao final do esquema.
ALTER TABLE nome_da_tabela CHANGE COLUMN nome_antigo nome_novo tipo_de_dados; Renomeia uma coluna ou altera seu tipo.
ALTER TABLE nome_da_tabela REPLACE COLUMNS (…); Substitui toda a lista de colunas por uma nova.
ALTER TABLE nome_da_tabela SET TBLPROPERTIES ('EXTERNAL'='TRUE'); Converte uma tabela gerenciada em uma tabela externa, e FALSE reverte essa conversão.
DROP TABLE [IF EXISTS] nome_da_tabela [PURGE]; Remove a tabela; o comando PURGE ignora a pasta Lixeira, portanto os dados não podem ser recuperados.
TRUNCATE [TABLE] nome_da_tabela; Remove todas as linhas, mas mantém o esquema; somente para tabelas gerenciadas.

Duas medidas de segurança são importantes em qualquer script. A condição `IF EXISTS` impede que a exclusão falhe em uma tabela que já foi removida, e a condição `DESCRIBE FORMATTED` confirma se o destino é uma tabela gerenciada (MANAGED_TABLE) ou externa (EXTERNAL_TABLE) antes da execução da exclusão.

Perguntas Frequentes

Execute o comando DESCRIBE FORMATTED nome_da_tabela. A linha Tipo de Tabela retorna MANAGED_TABLE ou EXTERNAL_TABLE. Verificar isso antes de excluir a tabela é a maneira mais econômica de evitar a exclusão de dados que outros jobs ainda estejam lendo.

Sim. O comando ALTER TABLE nome_da_tabela SET TBLPROPERTIES ('EXTERNAL'='TRUE') inverte o tipo no metastore, e FALSE o reverte de volta. Os arquivos de dados permanecem onde estão, portanto, não é necessário recarregar.

Normalmente não, apenas a entrada do metastore é excluída. No entanto, a partir do Hive 4.0.0, uma tabela externa com a propriedade external.table.purge definida como true também tem seus dados excluídos pelo comando DROP, portanto, verifique as propriedades primeiro.

Um comando CREATE TABLE simples agora produz, por padrão, uma tabela ORC gerenciada e transacional em vez de uma tabela de texto simples. A adição da palavra-chave EXTERNAL é o que mantém o comportamento antigo, não ACID, em um cluster Hive 3.

O comando TRUNCATE remove todas as linhas, mas mantém o esquema, e funciona apenas em tabelas gerenciadas. O comando DROP também remove o esquema. TRUNCATE é a opção mais segura quando a definição da tabela precisa sobreviver a uma recarga.

Não. O Hive converte os identificadores para minúsculas no metastore, portanto, GURU_SAMPLE e guru_sample referem-se à mesma tabela. Os valores de string dentro dos dados continuam diferenciando maiúsculas de minúsculas, e é por isso que uma comparação WHERE ainda pode não encontrar linhas.

Sim. Os recursos de aprendizado de máquina nas ferramentas de catálogo criam perfis da cardinalidade das colunas, taxas de valores nulos e padrões de consulta, e então sugerem tipos de dados, formatos de arquivo e chaves de partição. Considere a saída como um rascunho, pois o modelo não consegue visualizar as cargas de trabalho planejadas.

O Copilot completa instruções CREATE, ALTER e DROP a partir de um breve comentário, e os assistentes de agentes podem gerar um script de migração completo. RevVeja a palavra-chave EXTERNAL e qualquer opção PURGE, pois um palpite errado ali apaga dados reais.

Resuma esta postagem com: