HiveQL - Chọn ở đâu
Ngôn ngữ truy vấn Hive (HiveQL) là ngôn ngữ truy vấn để Hive xử lý và phân tích dữ liệu có cấu trúc trong Metastore. Chương này giải thích cách sử dụng câu lệnh SELECT với mệnh đề WHERE.
Câu lệnh SELECT được sử dụng để lấy dữ liệu từ bảng. Mệnh đề WHERE hoạt động tương tự như một điều kiện. Nó lọc dữ liệu bằng cách sử dụng điều kiện và cung cấp cho bạn một kết quả hữu hạn. Các toán tử và hàm tích hợp tạo ra một biểu thức đáp ứng điều kiện.
Cú pháp
Dưới đây là cú pháp của truy vấn SELECT:
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[HAVING having_condition]
[CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]]
[LIMIT number];
Thí dụ
Hãy để chúng tôi lấy một ví dụ cho mệnh đề SELECT… WHERE. Giả sử chúng ta có bảng nhân viên như được đưa ra bên dưới, với các trường có tên Id, Tên, Lương, Chức vụ và Phòng ban Tạo truy vấn để truy xuất chi tiết nhân viên kiếm được mức lương hơn 30000 Rs.
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
|1202 | Manisha | 45000 | Proofreader | PR |
|1203 | Masthanvali | 40000 | Technical writer | TP |
|1204 | Krian | 40000 | Hr Admin | HR |
|1205 | Kranthi | 30000 | Op Admin | Admin |
+------+--------------+-------------+-------------------+--------+
Truy vấn sau truy xuất chi tiết nhân viên bằng cách sử dụng tình huống trên:
hive> SELECT * FROM employee WHERE salary>30000;
Khi thực hiện thành công truy vấn, bạn sẽ thấy phản hồi sau:
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
|1202 | Manisha | 45000 | Proofreader | PR |
|1203 | Masthanvali | 40000 | Technical writer | TP |
|1204 | Krian | 40000 | Hr Admin | HR |
+------+--------------+-------------+-------------------+--------+
Chương trình JDBC
Chương trình JDBC áp dụng mệnh đề where cho ví dụ đã cho như sau.
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveQLWhere {
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
Resultset res = stmt.executeQuery("SELECT * FROM employee WHERE salary>30000;");
System.out.println("Result:");
System.out.println(" ID \t Name \t Salary \t Designation \t Dept ");
while (res.next()) {
System.out.println(res.getInt(1) + " " + res.getString(2) + " " + res.getDouble(3) + " " + res.getString(4) + " " + res.getString(5));
}
con.close();
}
}
Lưu chương trình trong một tệp có tên HiveQLWhere.java. Sử dụng các lệnh sau để biên dịch và thực thi chương trình này.
$ javac HiveQLWhere.java
$ java HiveQLWhere
Đầu ra:
ID Name Salary Designation Dept
1201 Gopal 45000 Technical manager TP
1202 Manisha 45000 Proofreader PR
1203 Masthanvali 40000 Technical writer TP
1204 Krian 40000 Hr Admin HR