Hive - Utwórz tabelę
W tym rozdziale wyjaśniono, jak utworzyć tabelę i wstawiać do niej dane. Konwencja tworzenia tabeli w HIVE jest bardzo podobna do tworzenia tabeli przy użyciu języka SQL.
Utwórz instrukcję tabeli
Utwórz tabelę to instrukcja używana do tworzenia tabeli w gałęzi. Składnia i przykład są następujące:
Składnia
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]
Przykład
Załóżmy, że musisz utworzyć tabelę o nazwie employee za pomocą CREATE TABLEkomunikat. W poniższej tabeli wymieniono pola i ich typy danych w tabeli pracowników:
Sr.No | Nazwa pola | Typ danych |
---|---|---|
1 | Eid | int |
2 | Nazwa | Strunowy |
3 | Wynagrodzenie | Pływak |
4 | Przeznaczenie | strunowy |
Następujące dane to komentarz, pola sformatowane w wierszach, takie jak terminator pola, terminator wierszy i typ zapisanego pliku.
COMMENT ‘Employee details’
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED IN TEXT FILE
Następujące zapytanie tworzy tabelę o nazwie employee korzystając z powyższych danych.
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;
Jeśli dodasz opcję JEŚLI NIE ISTNIEJE, gałąź zignoruje instrukcję w przypadku, gdy tabela już istnieje.
Po pomyślnym utworzeniu tabeli zobaczysz następującą odpowiedź:
OK
Time taken: 5.905 seconds
hive>
Program JDBC
Podano przykład programu JDBC do tworzenia tabeli.
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();
}
}
Zapisz program w pliku o nazwie HiveCreateDb.java. Poniższe polecenia służą do kompilowania i wykonywania tego programu.
$ javac HiveCreateDb.java
$ java HiveCreateDb
Wynik
Table employee created.
Instrukcja ładowania danych
Generalnie po utworzeniu tabeli w SQL możemy wstawiać dane za pomocą instrukcji Insert. Ale w Hive możemy wstawiać dane za pomocą instrukcji LOAD DATA.
Podczas wstawiania danych do Hive lepiej jest używać LOAD DATA do przechowywania rekordów zbiorczych. Istnieją dwa sposoby ładowania danych: jeden z lokalnego systemu plików, a drugi z systemu plików Hadoop.
Składnia
Składnia danych ładowania jest następująca:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
- LOCAL to identyfikator określający ścieżkę lokalną. Jest to opcjonalne.
- OVERWRITE jest opcjonalne, aby nadpisać dane w tabeli.
- PARTYCJA jest opcjonalna.
Przykład
Do tabeli wstawimy następujące dane. Jest to plik tekstowy o nazwiesample.txt w /home/user informator.
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
Następujące zapytanie ładuje podany tekst do tabeli.
hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt'
OVERWRITE INTO TABLE employee;
Po pomyślnym pobraniu zobaczysz następującą odpowiedź:
OK
Time taken: 15.905 seconds
hive>
Program JDBC
Poniżej podano program JDBC do załadowania danych do tabeli.
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();
}
}
Zapisz program w pliku o nazwie HiveLoadData.java. Użyj następujących poleceń, aby skompilować i wykonać ten program.
$ javac HiveLoadData.java
$ java HiveLoadData
Wynik:
Load Data into employee successful