Hive - Crea tabella

Questo capitolo spiega come creare una tabella e come inserire dati in essa. Le convenzioni di creazione di una tabella in HIVE sono abbastanza simili alla creazione di una tabella utilizzando SQL.

Crea istruzione tabella

Crea tabella è un'istruzione utilizzata per creare una tabella in Hive. La 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 nella tabella dei dipendenti:

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

I dati seguenti sono un commento, campi formattati riga come terminatore di campo, terminatore di righe e tipo di file archiviato.

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.

hive> 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 SE NON ESISTE, Hive 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
hive>

Programma JDBC

Il programma JDBC per creare una tabella viene fornito come esempio.

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveCreateTable {
   private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
   
   public static void main(String[] args) throws SQLException {
   
      // Register driver and create driver instance
      Class.forName(driverName);
      
      // get connection
      Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
      
      // create statement
      Statement stmt = con.createStatement();
      
      // execute statement
      stmt.executeQuery("CREATE TABLE IF NOT EXISTS "
         +" employee ( eid int, name String, "
         +" salary String, destignation String)"
         +" COMMENT ‘Employee details’"
         +" ROW FORMAT DELIMITED"
         +" FIELDS TERMINATED BY ‘\t’"
         +" LINES TERMINATED BY ‘\n’"
         +" STORED AS TEXTFILE;");
         
      System.out.println(“ Table employee created.”);
      con.close();
   }
}

Salvare il programma in un file denominato HiveCreateDb.java. I seguenti comandi vengono utilizzati per compilare ed eseguire questo programma.

$ javac HiveCreateDb.java
$ java HiveCreateDb

Produzione

Table employee created.

Istruzione Load Data

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

Durante l'inserimento dei dati in Hive, è preferibile utilizzare LOAD DATA per archiviare i record di massa. Esistono due modi per caricare i dati: uno dal file system locale e il secondo dal file system Hadoop.

Sintassi

La sintassi per caricare i dati è 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.

hive> 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
hive>

Programma JDBC

Di seguito è riportato il programma JDBC per caricare i dati nella tabella.

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveLoadData {

   private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
   
   public static void main(String[] args) throws SQLException {
   
      // Register driver and create driver instance
      Class.forName(driverName);
      
      // get connection
      Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
      
      // create statement
      Statement stmt = con.createStatement();
      
      // execute statement
      stmt.executeQuery("LOAD DATA LOCAL INPATH '/home/user/sample.txt'" + "OVERWRITE INTO TABLE employee;");
      System.out.println("Load Data into employee successful");
      
      con.close();
   }
}

Salvare il programma in un file denominato HiveLoadData.java. Utilizzare i seguenti comandi per compilare ed eseguire questo programma.

$ javac HiveLoadData.java
$ java HiveLoadData

Produzione:

Load Data into employee successful