Tipos de dados do Hive: como criar e descartar bancos de dados no Hive
⚡ Resumo Inteligente
Os tipos de dados do Hive definem o que cada coluna da tabela pode armazenar, e os comandos CREATE DATABASE e DROP DATABASE configuram ou removem o namespace onde essas tabelas residem dentro do metastore do Hive.

Os tipos de dados são elementos muito importantes na linguagem de consulta e na modelagem de dados do Hive. Para definir os tipos de coluna de uma tabela, precisamos conhecer os tipos de dados e seus usos.
A seguir, apresentamos uma breve visão geral de alguns tipos de dados presentes no Hive:
- Tipos Numéricos
- Tipos de String
- Tipos de data/hora
- Tipos complexos
Tipos de dados no Hive
Cada coluna do Hive é declarada com um dos tipos abaixo. As famílias primitivas vêm primeiro, seguidas pelos tipos complexos que armazenam mais de um valor em uma única coluna.
Tipos de dados numéricos do Hive
As colunas numéricas variam de um único byte a oito bytes, portanto, escolher o menor tipo que se ajuste aos valores mantém os custos de armazenamento e de leitura baixos.
| Formato | Alocação de memória |
|---|---|
| TINYINT | Inteiro assinado de 1 bytes (-128 a 127) |
| PEQUENO | Inteiro assinado de 2 bytes (-32,768 a 32,767) |
| INT | Inteiro assinado de 4 bytes (-2,147,483,648 a 2,147,483,647) |
| GRANDE | Inteiro assinado de 8 bytes (-9,223,372,036,854,775,808 a 9,223,372,036,854,775,807) |
| FLOAT | Número de ponto flutuante de precisão simples de 4 bytes |
| DUPLO | Número de ponto flutuante de dupla precisão de 8 bytes |
| DECIMAL | Podemos definir a precisão e a escala neste tipo, como DECIMAL(precisão, escala). Quando são omitidas, o Hive usa DECIMAL(10,0). |
Tipos de dados de string do Hive
As colunas de caracteres vêm em três formatos, e a diferença entre eles é se o Hive impõe ou não um comprimento declarado.
| Formato | Comprimento |
|---|---|
| CARACTERES | Comprimento fixo, até 255 caracteres. Valores menores são preenchidos com espaços. |
| VARCHAR | De 1 a 65,535 caracteres. Valores maiores serão truncados silenciosamente. |
| STRING | Podemos definir o comprimento aqui (sem limite). |
Tipos de dados de data/hora do Hive
As colunas temporais são armazenadas sem qualquer deslocamento de fuso horário, o que é importante lembrar antes de comparar valores gravados por clusters diferentes.
| Formato | Uso |
|---|---|
| Timestamp | Suporta tradicional Unix carimbo de data/hora com precisão opcional de nanossegundos |
| Data | Está no formato AAAA-MM-DD. O intervalo de valores suportados para o tipo Data é de 0000-01-01 a 9999-12-31, dependendo do suporte do tipo primitivo. Java data típica |
Tipos de dados diversos do Hive
Outros dois tipos primitivos estão fora das famílias numérica, de string e de data, mas aparecem regularmente em esquemas reais.
| Formato | Uso |
|---|---|
| BOOLEAN | Armazena verdadeiro ou falso |
| BINARY | Armazena uma matriz de bytes, o que impede que o conteúdo bruto seja inserido em uma coluna STRING. |
Tipos de dados complexos do Hive
Os tipos complexos aninham valores dentro de uma única coluna, o que elimina a junção extra que um design relacional exigiria.
| Formato | Uso |
|---|---|
| Arrays | VARIEDADE Valores negativos e expressões não constantes não são permitidos |
| mapas | MAPA Valores negativos e expressões não constantes não são permitidos |
| Estruturas | ESTRUTURA |
| União | TIPO DE UNIÃO |
Exemplo de tipos de dados complexos do Hive
A tabela acima apresenta a forma de declaração. A instrução abaixo reúne três dos tipos complexos em uma única tabela, permitindo visualizar as cláusulas delimitadoras e a sintaxe de acesso em conjunto.
CREATE TABLE employees ( name STRING, skills ARRAY<STRING>, deductions MAP<STRING, FLOAT>, address STRUCT<street:STRING, city:STRING, pin:INT> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
São necessários três delimitadores distintos: um entre as colunas, um segundo entre os itens de um ARRAY ou STRUCT e um terceiro entre a chave de um MAP e seu valor. Uma vez que a tabela exista, cada coluna complexa é lida com seu próprio acessador.
SELECT name, skills[0], deductions['tax'], address.city FROM employees;
A tabela abaixo resume a qual tipo pertence cada acessador.
| Formato | Como um valor é lido |
|---|---|
| ARRAY | Índice baseado em zero, como skills[0] |
| MAPA | Consulta de chave entre colchetes, como deduções['imposto'] |
| ESTRUTURA | A notação de ponto no nome do campo, como endereço.cidade |
| TIPO DE UNIÃO | Raramente utilizado, pois o suporte a consultas para ele permanece incompleto. |
Tipos complexos podem ser aninhados, portanto, ARRAY > é uma declaração de coluna válida. Uma vez definido o layout das colunas, as próprias tabelas são construídas com as instruções abordadas em Hive cria, altera e exclui tabelas.
Como criar e descartar bancos de dados no Hive
Um banco de dados no Hive é simplesmente um espaço de nomes que agrupa tabelas, sendo, portanto, o primeiro objeto a ser criado antes de qualquer manipulação de tabelas. A seguir, estão os passos para criar e excluir bancos de dados no Hive.
Passo 1) Criar banco de dados no Hive
Para criar um banco de dados no shell do Hive, precisamos usar o comando conforme mostrado na sintaxe abaixo:
Sintaxe:
Create database <DatabaseName>
Exemplo: Criar banco de dados “guru99”
A captura de tela abaixo mostra a instrução CREATE seguida por um comando SHOW listando todos os bancos de dados no cluster.
Conforme a captura de tela acima, estamos fazendo duas coisas:
- Criando banco de dados “guru99” no Hive
- Exibindo bancos de dados existentes usando o comando “show”
Na mesma tela, o banco de dados “guru99” é exibido ao final da execução do comando show, o que significa que o banco de dados “guru99” foi criado com sucesso.
Etapa 2) Excluir banco de dados no Hive
Para quedaping Para excluir um banco de dados no shell do Hive, precisamos usar o comando "drop", conforme mostrado na sintaxe abaixo:
Sintaxe:
Drop database <DatabaseName>
Exemplo: Excluir banco de dados guru99
Na próxima captura de tela, a instrução drop é executada primeiro e o comando show que se segue não lista mais o banco de dados.
Na captura de tela acima, estamos fazendo duas coisas:
- Estamos caindoping banco de dados 'guru99' do Hive
- verificando o mesmo com o comando “mostrar”
Na mesma tela, após verificar os bancos de dados com o comando show, o banco de dados “guru99” não aparece no Hive. Portanto, podemos confirmar que o banco de dados “guru99” foi excluído.
Comandos do banco de dados Hive: USE, DESCRIBE, SHOW e ALTER DATABASE
As duas declarações acima usam sua forma mais curta. A sintaxe documentada contém cláusulas opcionais que definem onde os arquivos serão salvos e o que acontece quando o nome já estiver em uso.
CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)];
DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];
As palavras-chave DATABASE e SCHEMA são intercambiáveis em todo o código, portanto, CREATE SCHEMA e CREATE DATABASE fazem exatamente a mesma coisa. Os comandos restantes complementam o trabalho diário com um namespace.
| Command | O que ele faz |
|---|---|
| MOSTRAR BANCOS DE DADOS; | Lista todos os bancos de dados registrados no metastore. |
| USE nome_do_banco de dados; | Define o banco de dados atual para que os nomes das tabelas não precisem de prefixo. |
| DESCRIBE DATABASE nome_do_banco_de_dados; | O relatório inclui o comentário, a localização no HDFS e o proprietário. |
| DESCRIBE DATABASE EXTENDED database_name; | Adiciona os pares chave-valor DBPROPERTIES a essa saída. |
| ALTER DATABASE nome_do_banco_de_dados SET DBPROPERTIES (…); | Adiciona ou substitui propriedades de metadados |
| ALTER DATABASE nome_do_banco_de_dados SET OWNER USER nome_do_usuário; | Transfere a propriedade para outro usuário ou função. |
| ALTER DATABASE nome_do_banco_de_dados SET LOCATION caminho_hdfs; | Altera o caminho usado pelas tabelas criadas a partir de então. |
Vale a pena memorizar duas configurações padrão. Sem uma cláusula LOCATION, os arquivos ficam no diretório do warehouse, normalmente /user/hive/warehouse/nome_do_banco_de_dados.db, e sem IF EXISTS, uma operação de exclusão em um arquivo com nome inexistente gera um erro em vez de prosseguir sem problemas. Ambas as configurações são armazenadas no arquivo. Metastore do Hive.
Conversão de tipo de dados e erros comuns no Hive
Os tipos nem sempre são usados exatamente como declarados. O Hive amplia um valor automaticamente quando nenhuma informação pode ser perdida e deixa todo o resto para uma conversão explícita.
- O alargamento implícito segue a cadeia TINYINT para SMALLINT para INT para BIGINT para FLOAT para DOUBLE, e uma STRING que contém dígitos é promovida para DOUBLE.
- A conversão de um valor do tipo DOUBLE para INT nunca ocorre espontaneamente, portanto, um valor DOUBLE atribuído a uma coluna INT precisa de uma conversão escrita.
- A função CAST realiza essa conversão escrita e retorna NULL em vez de um erro quando o valor não pode ser convertido.
SELECT CAST(salary AS DECIMAL(10,2)) FROM employees;
Os erros abaixo são responsáveis pela maioria das surpresas que os iniciantes encontram em seu primeiro esquema.
| Sintoma | Causa e solução |
|---|---|
| A operação de exclusão falha enquanto o banco de dados ainda contém tabelas. | RESTRICT é o padrão. Adicione CASCADE para excluir as tabelas incluídas. |
| Uma longa corda chega encurtada. | VARCHAR trunca silenciosamente os dados além do comprimento declarado. Use STRING quando não desejar um limite. |
| Uma coluna é exibida como NULL após uma conversão. | A função CAST não conseguiu analisar o valor. Verifique os dados de origem antes de ampliar o tipo. |
| Os valores das moedas perdem seus centavos. | DECIMAL sem argumentos significa DECIMAL(10,0). Indique a escala explicitamente. |
| Duas datas idênticas nunca coincidem. | Uma data em formato de string e uma coluna de data são tipos diferentes. Converta um lado antes de comparar. |
Uma vez que os tipos estejam funcionando corretamente, o próximo passo é carregar e consultar os dados em si, o que é abordado em [referência]. Consultas Hive com Order By, Group By e Cluster By.


