Hive - Tạo bảng
Chương này giải thích cách tạo bảng và cách chèn dữ liệu vào đó. Các quy ước tạo bảng trong HIVE khá giống với tạo bảng bằng SQL.
Tạo Báo cáo Bảng
Create Table là một câu lệnh dùng để tạo bảng trong Hive. Cú pháp và ví dụ như sau:
Cú pháp
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]
Thí dụ
Giả sử bạn cần tạo một bảng có tên employee sử dụng CREATE TABLEtuyên bố. Bảng sau liệt kê các trường và kiểu dữ liệu của chúng trong bảng nhân viên:
Sr.No | Tên trường | Loại dữ liệu |
---|---|---|
1 | Eid | int |
2 | Tên | Chuỗi |
3 | Tiền lương | Phao nổi |
4 | Chỉ định | chuỗi |
Dữ liệu sau đây là một Nhận xét, các trường được định dạng theo hàng chẳng hạn như phần cuối Trường, phần cuối dòng và loại tệp được lưu trữ.
COMMENT ‘Employee details’
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED IN TEXT FILE
Truy vấn sau tạo một bảng có tên employee sử dụng dữ liệu trên.
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;
Nếu bạn thêm tùy chọn NẾU KHÔNG TỒN TẠI, Hive sẽ bỏ qua câu lệnh trong trường hợp bảng đã tồn tại.
Khi tạo bảng thành công, bạn sẽ thấy phản hồi sau:
OK
Time taken: 5.905 seconds
hive>
Chương trình JDBC
Chương trình JDBC để tạo một bảng được đưa ra ví dụ.
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();
}
}
Lưu chương trình trong một tệp có tên HiveCreateDb.java. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
$ javac HiveCreateDb.java
$ java HiveCreateDb
Đầu ra
Table employee created.
Tải báo cáo dữ liệu
Nói chung, sau khi tạo bảng trong SQL, chúng ta có thể chèn dữ liệu bằng câu lệnh Insert. Nhưng trong Hive, chúng ta có thể chèn dữ liệu bằng câu lệnh LOAD DATA.
Trong khi chèn dữ liệu vào Hive, tốt hơn nên sử dụng LOAD DATA để lưu trữ các bản ghi hàng loạt. Có hai cách để tải dữ liệu: một là từ hệ thống tệp cục bộ và thứ hai là từ hệ thống tệp Hadoop.
Cú pháp
Cú pháp tải dữ liệu như sau:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
- LOCAL là định danh để chỉ định đường dẫn cục bộ. Nó là tùy chọn.
- OVERWRITE là tùy chọn để ghi đè dữ liệu trong bảng.
- PHẦN THƯỞNG là tùy chọn.
Thí dụ
Chúng tôi sẽ chèn dữ liệu sau vào bảng. Nó là một tệp văn bản có tênsample.txt trong /home/user danh mục.
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
Truy vấn sau tải văn bản đã cho vào bảng.
hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt'
OVERWRITE INTO TABLE employee;
Khi tải xuống thành công, bạn sẽ thấy phản hồi sau:
OK
Time taken: 15.905 seconds
hive>
Chương trình JDBC
Dưới đây là chương trình JDBC để tải dữ liệu đã cho vào bảng.
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();
}
}
Lưu chương trình trong một tệp có tên HiveLoadData.java. Sử dụng các lệnh sau để biên dịch và thực thi chương trình này.
$ javac HiveLoadData.java
$ java HiveLoadData
Đầu ra:
Load Data into employee successful