Ở bài viết này mình sẽ trình bài tiếp về cách thao tác thay đổi trong database của Hive như là thay đổi tên table và thay đổi cột trong table, các bạn cùng theo dõi nhé ^^
1. Alter table Statement – Câu lệnh thay đổi table
Được sử dụng thể thay đổi một table trong Hive
Cú pháp:
Sử dụng các cú pháp sau tùy vào thuộc tính bạn muốn thay đổi trong bảng.
1 2 3 4 5 6 | ALTER TABLE name RENAME TO new_name ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...]) ALTER TABLE name DROP [COLUMN] column_name ALTER TABLE name CHANGE column_name new_name new_type ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...]) |
2. Câu lệnh rename
Truy vấn sau đây đổi tên bảng từ employee thành emp
1 2 | hive> ALTER TABLE employee RENAME TO emp; |
JDBC Program
JDBC program sau sẽ đổi tên table như trên
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveAlterRenameTo { 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("ALTER TABLE employee RENAME TO emp;"); System.out.println("Table Renamed Successfully"); con.close(); } } |
Lưu tên chương trình là HiveAlterRenameTo.java. Và ta chạy câu lệnh sau để compile và execute chương trình
1 2 3 | $ javac HiveAlterRenameTo.java $ java HiveAlterRenameTo |
Output:
1 2 | Table renamed successfully. |
3. Câu lệnh thay đổi
Bảng sau bao gồm các trường của table employee, những trường được thay đổi sẽ được in đậm
Hai câu truy vấn sau sẽ thực hiện sự thay đổi trên
1 2 3 | hive> ALTER TABLE employee CHANGE name ename String; hive> ALTER TABLE employee CHANGE salary salary Double; |
JDBC Program
JDBC Program sau sẽ thực hiện thay đổi trên
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveAlterChangeColumn { 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("ALTER TABLE employee CHANGE name ename String;"); stmt.executeQuery("ALTER TABLE employee CHANGE salary salary Double;"); System.out.println("Change column successful."); con.close(); } } |
Lưu chương trình trong file tên là HiveAlterChangeColumn.java. Sử dụng lệnh command sau:
1 2 3 | $ javac HiveAlterChangeColumn.java $ java HiveAlterChangeColumn |
Output:
1 2 | Change column successful. |
4. Câu lệnh thêm cột
Câu truy vấn sau thêm cột dept vào bảng employee
1 2 3 | hive> ALTER TABLE employee ADD COLUMNS ( dept STRING COMMENT 'Department name'); |
JDBC Program
JDBC Program thêm cột vào bảng như sau :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveAlterAddColumn { 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("ALTER TABLE employee ADD COLUMNS " + " (dept STRING COMMENT 'Department name');"); System.out.prinln("Add column successful."); con.close(); } } |
Lưu chương trình trong file tên là HiveAlterAddColumn.java. Sử dụng lệnh command sau để compile và execute:
1 2 3 | $ javac HiveAlterAddColumn.java $ java HiveAlterAddColumn |
Output:
1 2 | Add column successful. |
5. Câu lệnh thay thế
Câu truy vấn sau sẽ xóa hết các cột trong table employee và thay thế chúng với cột emp và name:
1 2 3 4 | hive> ALTER TABLE employee REPLACE COLUMNS ( eid INT empid Int, ename STRING name String); |
JDBC Program
Chương trình JDBC bên dưới thay thế cột eid bằng cột empid và ename bằng cột name
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveAlterReplaceColumn { 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("ALTER TABLE employee REPLACE COLUMNS " +" (eid INT empid Int," +" ename STRING name String);"); System.out.println(" Replace column successful"); con.close(); } } |
Lưu chương trình với tên HiveAlterReplaceColumn.java. Sử dụng câu lệnh command để compile và execute:
1 2 3 | $ javac HiveAlterReplaceColumn.java $ java HiveAlterReplaceColumn |
Output:
1 2 | Replace column successful. |