HCatalog - Crea tabella

Questo capitolo spiega come creare una tabella e come inserire dati in essa. Le convenzioni per la creazione di una tabella in HCatalog sono abbastanza simili alla creazione di una tabella tramite Hive.

Crea istruzione tabella

Crea tabella è un'istruzione utilizzata per creare una tabella nel metastore di Hive utilizzando HCatalog. La sua sintassi e l'esempio sono i seguenti:

Sintassi

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]

Esempio

Supponiamo che sia necessario creare una tabella denominata employee utilizzando CREATE TABLEdichiarazione. La tabella seguente elenca i campi e i relativi tipi di dati nel fileemployee tavolo -

Suor n Nome campo Tipo di dati
1 Eid int
2 Nome Corda
3 Stipendio Galleggiante
4 Designazione corda

I seguenti dati definiscono i campi supportati come Comment, Campi formattati riga come Field terminator, Lines terminator, e Stored File type.

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

La query seguente crea una tabella denominata employee utilizzando i dati di cui sopra.

./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 aggiungi l'opzione IF NOT EXISTS, HCatalog ignora l'istruzione nel caso in cui la tabella esista già.

Dopo aver creato con successo la tabella, puoi vedere la seguente risposta:

OK
Time taken: 5.905 seconds

Istruzione Load Data

Generalmente, dopo aver creato una tabella in SQL, possiamo inserire i dati utilizzando l'istruzione Insert. Ma in HCatalog, inseriamo i dati utilizzando l'istruzione LOAD DATA.

Durante l'inserimento dei dati in HCatalog, è preferibile utilizzare LOAD DATA per memorizzare i record di massa. Esistono due modi per caricare i dati: uno è dalocal file system e il secondo è da Hadoop file system.

Sintassi

La sintassi per LOAD DATA è la seguente:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
  • LOCAL è l'identificatore per specificare il percorso locale. È facoltativo.
  • OVERWRITE è facoltativo per sovrascrivere i dati nella tabella.
  • PARTITION è opzionale.

Esempio

Inseriremo i seguenti dati nella tabella. È un file di testo denominatosample.txt in /home/user directory.

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

La seguente query carica il testo specificato nella tabella.

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

In caso di download riuscito, viene visualizzata la seguente risposta:

OK
Time taken: 15.905 seconds