
- Hive 教程
- Hive - 首頁
- Hive - 簡介
- Hive - 安裝
- Hive - 資料型別
- Hive - 建立資料庫
- Hive - 刪除資料庫
- Hive - 建立表
- Hive - 修改表
- Hive - 刪除表
- Hive - 分割槽
- Hive - 內建運算子
- Hive - 內建函式
- Hive - 檢視和索引
- HiveQL
- HiveQL - Select Where
- HiveQL - Select Order By
- HiveQL - Select Group By
- HiveQL - Select Joins
- Hive 有用資源
- Hive - 問題與解答
- Hive - 快速指南
- Hive - 有用資源
HiveQL - Select-Where
Hive 查詢語言 (HiveQL) 是一種查詢語言,用於 Hive 來處理、分析元資料中的結構化資料。本章會介紹如何使用帶有 WHERE 子句的 SELECT 語句。
SELECT 語句用於從表中檢索資料。WHERE 子句的工作類似於一個條件。它使用條件對資料進行篩選,併為您提供有限的結果。內建運算子和函式生成一個表示式,該表示式滿足條件。
語法
以下是 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];
示例
讓我們以 SELECT…WHERE 子句為例。假設我們有如下所示的 employee 表,其中欄位名為 Id、Name、Salary、Designation 和 Dept。生成一個查詢來檢索薪水高於 30000 盧比的員工詳細資訊。
+------+--------------+-------------+-------------------+--------+ | 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 | +------+--------------+-------------+-------------------+--------+
使用上述方案,以下查詢會檢索員工詳細資訊
hive> SELECT * FROM employee WHERE salary>30000;
在成功執行查詢後,您會看到以下響應
+------+--------------+-------------+-------------------+--------+ | 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 | +------+--------------+-------------+-------------------+--------+
JDBC 程式
用於對給定示例應用 where 子句的 JDBC 程式如下。
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://: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(); } }
將程式儲存到名為 HiveQLWhere.java 的檔案中。使用以下命令來編譯並執行此程式。
$ javac HiveQLWhere.java $ java HiveQLWhere
輸出
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
廣告