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