大象教程
首页
Spark
Hadoop
HDFS
MapReduce
Hive
Hive 教程
Hive 教程
Hive 安装(基于Ubuntu系统)
Hive 架构
Hive 内置函数
Hive UDF 简介
Hive DDL 命令
Hive 视图
Hive 索引
Hive Metastore 的三种配置方式
Hive 数据模型
Hive 数据类型
Hive 操作符
Hive SerDe(序列化与反序列化)
Hive 数据分区
Hive 分桶
Hive 分区与分桶的比较
Hive Join 的原理与机制
Hive map Join
Hive bucket map join
#Hive 操作符 本节介绍Hive的内置运算符。在Hive有四种类型的运算符: - 关系运算符 - 算术运算符 - 逻辑运算符 - 复杂运算符 ##关系运算符 这些操作符被用来比较两个操作数。下表描述了在Hive中可用的关系运算符: |运算符 |操作 |描述| |-----|-----|----| |A = B |所有基本类型 |如果表达A等于表达B,结果TRUE ,否则FALSE。| |A != B| 所有基本类型| 如果A不等于表达式B表达返回TRUE ,否则FALSE。| |A < B| 所有基本类型| TRUE,如果表达式A小于表达式B,否则FALSE。| |A <= B| 所有基本类型| TRUE,如果表达式A小于或等于表达式B,否则FALSE。| |A > B| 所有基本类型| TRUE,如果表达式A大于表达式B,否则FALSE。| |A >= B |所有基本类型| TRUE,如果表达式A大于或等于表达式B,否则FALSE。| |A IS NULL |所有类型| TRUE,如果表达式的计算结果为NULL,否则FALSE。| |A IS NOT NULL| 所有类型| FALSE,如果表达式A的计算结果为NULL,否则TRUE。| |A LIKE B |字符串| TRUE,如果字符串模式A匹配到B,否则FALSE。| |A RLIKE B |字符串 |NULL,如果A或B为NULL;TRUE,如果A任何子字符串匹配Java正则表达式B;否则FALSE。| |A REGEXP B |字符串| 等同于RLIKE。| ###示例 让我们假设 employee 表由字段:Id,Name,Salary,Designation,和 Dept 组成,如下图所示。生成一个查询检索员工 id 为 1025 的详细信息。 ```sql +-----+--------------+--------+---------------------------+------+ | 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| +-----+--------------+--------+---------------------------+------+ ``` 以下查询执行检索使用上述表中的雇员的详细信息: ```sql hive> SELECT * FROM employee WHERE Id=1205; ``` 成功执行的查询,能看到以下结果: ```sql +-----+-----------+-----------+----------------------------------+ | ID | Name | Salary | Designation | Dept | +-----+---------------+-------+----------------------------------+ |1205 | Kranthi | 30000 | Op Admin | Admin | +-----+-----------+-----------+----------------------------------+ ``` 下面的查询执行以检索薪水大于或等于 40000 元的雇员的详细信息。 ```sql hive> SELECT * FROM employee WHERE Salary>=40000; ``` 成功执行的查询,能看到以下结果: ```sql +-----+------------+--------+----------------------------+------+ | 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 | +-----+------------+--------+----------------------------+------+ ``` ##算术运算符 这些运算符支持的操作数各种常见的算术运算。所有这些返回数字类型。下表描述了在 Hive 中可用的算术运算符: ![hive算术运算符](/media/editor/file_1574263710000_20191120232832642172.png "hive算术运算符") ###示例 下面的查询相加两个数字,20 和 30。 ```sql hive> SELECT 20+30 ADD FROM temp; ``` 在成功执行查询后,能看到以下结果: ```sql +--------+ | ADD | +--------+ | 50 | +--------+ ``` ##逻辑运算符 运算符是逻辑表达式。所有这些返回 TRUE 或 FALSE。 ![hive逻辑运算符](/media/editor/file_1574263999000_20191120233325910047.png "hive逻辑运算符") ###示例 下面的查询用于检索部门是 TP 并且工资超过40000元的员工详细信息。 ```sql hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP; ``` 成功执行查询后,能看到以下回应: ```sql +------+--------------+-------------+-------------------+--------+ | ID | Name | Salary | Designation | Dept | +------+--------------+-------------+-------------------+--------+ |1201 | Gopal | 45000 | Technical manager | TP | +------+--------------+-------------+-------------------+--------+ ``` ##复杂的运算符 这些运算符提供一个表达式来接入复杂类型的元素。 |运算符| 操作| 描述| |----|-----|-----| |A[n] |A是一个数组,n是一个int| 它返回数组A的第n个元素,第一个元素的索引0。 |M[key]| M 是一个 Map
并 key 的类型为K |它返回对应于映射中关键字的值。 |S.x |S 是一个结构 |它返回S的s字段
加我微信交流吧