HCatalog - Criar Tabela

Este capítulo explica como criar uma tabela e inserir dados nela. As convenções de criação de uma tabela no HCatalog são bastante semelhantes à criação de uma tabela usando o Hive.

Criar declaração de tabela

Criar Tabela é uma instrução usada para criar uma tabela no Hive metastore usando HCatalog. Sua sintaxe e exemplo são os seguintes -

Sintaxe

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[ROW FORMAT row_format]
[STORED AS file_format]

Exemplo

Vamos supor que você precise criar uma tabela chamada employee usando CREATE TABLEdeclaração. A tabela a seguir lista os campos e seus tipos de dados noemployee mesa -

Sr. Não Nome do Campo Tipo de dados
1 Eid int
2 Nome Corda
3 Salário Flutuador
4 Designação corda

Os dados a seguir definem os campos suportados, como Comment, Campos formatados por linha, como Field terminator, Lines terminatore Stored File type.

COMMENT ‘Employee details’
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED IN TEXT FILE

A consulta a seguir cria uma tabela chamada employee usando os dados acima.

./hcat –e "CREATE TABLE IF NOT EXISTS employee ( eid int, name String, 
   salary String, destination String) \
COMMENT 'Employee details' \
ROW FORMAT DELIMITED \
FIELDS TERMINATED BY ‘\t’ \
LINES TERMINATED BY ‘\n’ \
STORED AS TEXTFILE;"

Se você adicionar a opção IF NOT EXISTS, HCatalog ignora a instrução caso a tabela já exista.

Com a criação bem-sucedida da tabela, você verá a seguinte resposta -

OK
Time taken: 5.905 seconds

Declaração de carga de dados

Geralmente, depois de criar uma tabela em SQL, podemos inserir dados usando a instrução Insert. Mas no HCatalog, inserimos dados usando a instrução LOAD DATA.

Ao inserir dados no HCatalog, é melhor usar LOAD DATA para armazenar registros em massa. Existem duas maneiras de carregar dados: uma é delocal file system e o segundo é de Hadoop file system.

Sintaxe

A sintaxe para LOAD DATA é a seguinte -

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
  • LOCAL é o identificador para especificar o caminho local. Isso é opcional.
  • OVERWRITE é opcional para sobrescrever os dados na tabela.
  • PARTITION é opcional.

Exemplo

Vamos inserir os seguintes dados na tabela. É um arquivo de texto chamadosample.txt dentro /home/user diretório.

1201  Gopal        45000    Technical manager
1202  Manisha      45000    Proof reader
1203  Masthanvali  40000    Technical writer
1204  Kiran        40000    Hr Admin
1205  Kranthi      30000    Op Admin

A consulta a seguir carrega o texto fornecido na tabela.

./hcat –e "LOAD DATA LOCAL INPATH '/home/user/sample.txt'
OVERWRITE INTO TABLE employee;"

Após o download bem-sucedido, você verá a seguinte resposta -

OK
Time taken: 15.905 seconds