Hive 内置运算符
Hive 中有四种类型的操作符:
- 关系运算符
- 算术运算符
- 逻辑运算符
- 复杂算子
关系运算符
这些运算符用于比较两个操作数。下表介绍了Hive中可用的关系运算符:
操作者 | 操作数 | 描述 |
---|---|---|
A = B | 所有原始类型 | 如果表达式A等同于表达式B,则返回FALSE。 |
A!= B | 所有原始类型 | 如果表达式A与表达式B不等价,则返回FALSE。 |
A | 所有原始类型 | 如果表达式A小于表达式B,则返回TRUE,否则返回FALSE。 |
A <= B | 所有原始类型 | 如果表达式A小于或等于表达式B,则返回TRUE否则返回FALSE。 |
A> B | 所有原始类型 | 如果表达式A大于表达式B,则返回TRUE,否则返回FALSE。 |
A> = B | 所有原始类型 | 如果表达式A大于或等于表达式B,则返回TRUE,否则返回FALSE。 |
一个IS NULL | 所有类型 | 如果表达式A的计算结果为NULL,则返回FALSE。 |
一个不是NULL | 所有类型 | 如果表达式A的计算结果为NULL,则为FALSE否则为TRUE。 |
A喜欢B | 字符串 | 如果字符串模式A与B匹配,则返回FALSE。 |
RLIKE B | 字符串 | 如果A或B为NULL,则为NULL;如果A的任何子字符串与Java正则表达式B匹配,则为TRUE,否则为FALSE。 |
REGEXP B | 字符串 | 和RLIKE一样。 |
例
让我们假设 雇员 表由名称为Id,Name,Salary,Designation和Dept的字段组成,如下所示。生成一个查询来检索ID为1205的员工详细信息。
+-----+--------------+--------+---------------------------+------+ | 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 Id=1205;
成功执行查询后,您将看到以下响应:
+-----+-----------+-----------+----------------------------------+ | ID | Name | Salary | Designation | Dept | +-----+---------------+-------+----------------------------------+ |1205 | Kranthi | 30000 | Op Admin | Admin | +-----+-----------+-----------+----------------------------------+
执行以下查询以检索工资大于或等于40000卢比的员工详细信息。
hive> SELECT * FROM employee WHERE Salary>=40000;
成功执行查询后,您将看到以下响应:
+-----+------------+--------+----------------------------+------+ | 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中可用的算术运算符:
运算符 | 操作数 | 描述 |
---|---|---|
A + B | 所有数字类型 | 给出添加A和B的结果。 |
A - B | 所有数字类型 | 给出从A中减去B的结果。 |
A * B | 所有数字类型 | 给出A和B相乘的结果。 |
A / B | 所有数字类型 | 给出从A中除B的结果。 |
A%B | 所有数字类型 | 给出由A除B产生的提醒。 |
A&B | 所有数字类型 | 给出A和B的按位AND的结果。 |
A | B | 所有数字类型 | 给出A和B的按位OR的结果。 |
A ^ B | 所有数字类型 | 给出A和B的按位XOR的结果。 |
〜A | 所有数字类型 | 给出A的按位NOT的结果。 |
例
以下查询添加了两个数字,20和30。
hive> SELECT 20+30 ADD FROM temp;
成功执行查询后,您将看到以下响应:
+--------+ | ADD | +--------+ | 50 | +--------+
逻辑运算符
操作符是逻辑表达式。他们都返回TRUE或FALSE。
操作符 | 操作数 | 描述 |
---|---|---|
A AND B | 布尔 | 如果A和B都为TRUE,则为TRUE,否则为FALSE。 |
A && B | 布尔 | 与A和B.相同 |
A OR B | 布尔 | 如果A或B或两者都为TRUE,则为TRUE,否则为FALSE。 |
A || B | 布尔 | 与A或B相同 |
NOT A | 布尔 | 如果A为FALSE,则为TRUE,否则为FALSE。 |
!A | 布尔 | 与NOT A相同 |
例
以下查询用于检索部门为TP且薪酬大于40000卢比的员工详细信息。
hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP;
成功执行查询后,您将看到以下响应:
+------+--------------+-------------+-------------------+--------+ | ID | Name | Salary | Designation | Dept | +------+--------------+-------------+-------------------+--------+ |1201 | Gopal | 45000 | Technical manager | TP | +------+--------------+-------------+-------------------+--------+
复杂运算
这些运算符提供了一个表达式来访问复杂类型的元素。
操作者 | 操作数 | 描述 |
---|---|---|
A[n] | A是一个数组,n是一个int | 它返回数组A中的第n个元素。第一个元素的索引为0。 |
M[key] | M是Map ,键有K型 | 它返回地图中对应于键的值。 |
S.x | S是一个结构 | 它返回S的x字段 |
Hive 内置函数看起来与SQL函数非常相似,除了它们的用法有些区别。 内置函数Hive支持以下内置函数:返回类型签名描述BIGINTround(double a)它返回double的四舍五入BIGINT值。B ...