- 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://127.0.0.1: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
广告