Hive - Créer une table

Ce chapitre explique comment créer un tableau et comment y insérer des données. Les conventions de création d'une table dans HIVE sont assez similaires à la création d'une table à l'aide de SQL.

Créer une instruction de table

Create Table est une instruction utilisée pour créer une table dans Hive. La syntaxe et l'exemple sont les suivants:

Syntaxe

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]

Exemple

Supposons que vous deviez créer une table nommée employee en utilisant CREATE TABLEdéclaration. Le tableau suivant répertorie les champs et leurs types de données dans la table des employés:

Sr.Non Nom de domaine Type de données
1 Eid int
2 Nom Chaîne
3 Un salaire Flotte
4 La désignation chaîne

Les données suivantes sont un commentaire, des champs au format ligne tels que le terminateur de champ, le terminateur de lignes et le type de fichier stocké.

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

La requête suivante crée une table nommée employee en utilisant les données ci-dessus.

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;

Si vous ajoutez l'option IF NOT EXISTS, Hive ignore l'instruction au cas où la table existe déjà.

Lors de la création réussie de la table, vous obtenez la réponse suivante:

OK
Time taken: 5.905 seconds
hive>

Programme JDBC

Le programme JDBC pour créer une table est donné par exemple.

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();
   }
}

Enregistrez le programme dans un fichier nommé HiveCreateDb.java. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.

$ javac HiveCreateDb.java
$ java HiveCreateDb

Production

Table employee created.

Charger la déclaration de données

Généralement, après avoir créé une table en SQL, nous pouvons insérer des données à l'aide de l'instruction Insert. Mais dans Hive, nous pouvons insérer des données à l'aide de l'instruction LOAD DATA.

Lors de l'insertion de données dans Hive, il est préférable d'utiliser LOAD DATA pour stocker des enregistrements en bloc. Il existe deux manières de charger des données: l'une provient du système de fichiers local et la seconde du système de fichiers Hadoop.

Syntaxe

La syntaxe des données de chargement est la suivante:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename 
[PARTITION (partcol1=val1, partcol2=val2 ...)]
  • LOCAL est l'identifiant pour spécifier le chemin local. C'est facultatif.
  • OVERWRITE est facultatif pour écraser les données de la table.
  • LA PARTITION est facultative.

Exemple

Nous insérerons les données suivantes dans le tableau. C'est un fichier texte nommésample.txt dans /home/user annuaire.

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 requête suivante charge le texte donné dans la table.

hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt'
OVERWRITE INTO TABLE employee;

Lors du téléchargement réussi, vous obtenez la réponse suivante:

OK
Time taken: 15.905 seconds
hive>

Programme JDBC

Ci-dessous, le programme JDBC pour charger des données données dans la table.

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();
   }
}

Enregistrez le programme dans un fichier nommé HiveLoadData.java. Utilisez les commandes suivantes pour compiler et exécuter ce programme.

$ javac HiveLoadData.java
$ java HiveLoadData

Production:

Load Data into employee successful