Hive中查询操作
一、查询语法 查询语句语法: [WITH CommonTable[removed], CommonTableExpression)*] Only available starting with Hive 0.13.0) SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [ORDER BY col_list] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] 在Hive中,查询操作是数据处理的核心,它允许用户从大数据存储中提取所需的信息。以下将详细解析Hive查询语法及其基本查询方法。 一、Hive查询语法 Hive的查询语句遵循标准SQL的基本结构,但也有一些Hive特有的扩展。基本语法如下: ```sql [WITH CommonTableExpression (, CommonTableExpression)*] SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [ORDER BY col_list] [CLUSTER BY col_list | [DISTRIBUTE BY col_list]] [SORT BY col_list] [LIMIT number] ``` - `WITH` 子句用于创建临时的结果表(Common Table Expressions,CTE),从这些结果表中可以进一步进行查询。 - `SELECT` 部分用于指定要从表中选择的列或表达式,`ALL` 表示选择所有行,`DISTINCT` 表示去除重复行。 - `FROM` 后跟你要查询的表名或视图(table_reference)。 - `WHERE` 子句用来设置查询条件,只有满足条件的行才会被返回。 - `GROUP BY` 用于对数据进行分组,通常与聚合函数(如COUNT, SUM, AVG等)一起使用。 - `ORDER BY` 对结果进行排序,`ASC`(升序)和`DESC`(降序)可以指定排序方向,默认为`ASC`。 - `CLUSTER BY` 和 `DISTRIBUTE BY` 主要用于分布式计算环境,控制数据如何分布到不同的分区或节点。 - `SORT BY` 用于本地排序,只在单个节点内部有效。 - `LIMIT` 用于限制返回的行数。 二、基本查询 1. **全表和特定列查询** - 全表查询:使用`*`代表所有列,如`SELECT * FROM emp;` - 特定列查询:列出需要的列名,如`SELECT empno, ename FROM emp;` 2. **列别名** - 使用`AS`关键字可以为列设置别名,提高查询结果的可读性,如`SELECT ename AS name, deptno dn FROM emp;` 3. **算数运算符** - Hive支持基本的算数运算,如加法(`+`), 减法(`-`), 乘法(`*`), 除法(`/`)和取模(`%`)。例如,`SELECT sal + 1 AS sal FROM emp;`将显示每个员工的薪水加1的结果。 4. **其他操作** - 聚合函数:如`COUNT`, `SUM`, `AVG`, `MIN`, `MAX`等,用于统计或计算一组值。 - 比较运算符:`=`, `<`, `>`, `<=`, `>=`, `!=`等,用于比较值。 - 逻辑运算符:`AND`, `OR`, `NOT`,用于组合条件。 - 字符串函数:如`CONCAT`, `SUBSTRING`, `UPPER`, `LOWER`等,用于处理字符串。 - 分组和聚合:`GROUP BY`配合聚合函数用于分组统计,`HAVING`在分组后过滤结果。 三、注意事项 - Hive SQL是大小写不敏感的,但为了代码的可读性,通常推荐使用大写字母编写关键词。 - SQL语句可以写在一行或多行,但为了清晰,建议每条语句的关键部分独立一行。 - 关键词不应缩写,且不应分行书写。 - 使用缩进来增加语句的可读性,便于理解复杂的查询结构。 在实际使用Hive时,结合这些基本查询操作,可以构建出满足各种需求的复杂查询,实现对大规模数据的高效分析。