Hive- 内置操作员

本章介绍Hive的内置运算符. Hive中有四种类型的运算符:

  • 关系运算符

  • 算术运算符

  • 逻辑运算符

  • 复杂运算符

关系运算符

这些运算符用于比较两个操作数.下表描述了Hive中可用的关系运算符:

运算符操作数描述
A = B所有原始类型如果表达式A等于表达式B则为TRUE,否则为FALSE .
A!= B所有原始类型如果表达式A不等于表达式B则为TRUE,否则为FALSE.
A< B所有原始类型如果表达式A小于表达式B则为TRUE,否则为FALSE.
A< = B所有原始类型如果表达式A较少则为TRUE或等于表达式B,否则为FALSE.
A> B所有基本类型如果表达式A大于表达式B则为TRUE,否则为FALSE.
A> = B所有原始类型如果表达式A更大,则为TRUE或等于表达式B,否则为FALSE.
一个IS NULL全部types如果表达式A的计算结果为NULL,则为TRUE,否则为FALSE.
A IS NOT NULL所有类型如果表达式A的计算结果为NULL,则为FALSE,否则为TRUE.
A LIKE B字符串如果字符串模式A与B匹配则为TRUE,否则为FALSE./td>
A RLIKE B字符串如果A或B为NULL,则为NULL;如果A的任何子字符串与Java正则表达式B匹配,则为TRUE,否则为FALSE.
A 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 |
+-----+-----------+-----------+----------------------------------+

执行以下查询以检索其薪水的员工详细信息大于或等于400卢比.

 
 hive> SELECT * FROM employee WHERE Salary> = 40000;

成功执行查询后,您会看到以下响应:

 
 + ----- + ------------ + -------- + ------------------ ---------- + ------ + 
 | ID |名称|薪水|指定|部门| 
 + ----- + ------------ + -------- + ----------------- ----------- + ------ + 
 | 1201 | Gopal | 45000 |技术经理| TP | 
 | 1202 | Manisha | 45000 |校对员|公关| 
 | 1203 | Masthanvali | 40000 |技术作家| TP | 
 | 1204 | Krian | 40000 |人力资源管理员|人力资源| 
 + ----- + ------------ + -------- + ----------------- ----------- + ------ +

算术运算符

这些运算符支持对操作数的各种常见算术运算.所有这些都返回数字类型.下表描述了Hive中可用的算术运算符:

运算符操作数描述
A + B所有数字类型给出添加A和B的结果.
A  -  B所有数字类型给出从A中减去B的结果.
A * B所有数字类型给予乘以A和B的结果.
A/B所有数字类型给出除以A的结果.
A%B所有数字类型给出A除以B得到的提示.
A& B所有数字类型给出A和B的按位AND结果.
A | B所有数字类型给出A和B的按位OR结果.
A ^ B所有数字类型给出A的按位XOR结果B.
~A所有数字类型给出按位NOT的结果.

示例

以下查询添加两个数字,20和30.

hive> SELECT 20 + 30 ADD FROM temp;

成功执行查询后,您会看到以下回复:

+--------+
|   ADD  |
+--------+
|   50   |
+--------+

逻辑运算符

运算符是逻辑表达式.所有这些都返回TRUE或FALSE.

运算符操作数描述
A AND Bboolean如果A和B都为TRUE,则为TRUE,否则为FALSE.
A&& Bboolean与A AND B相同.
A OR Bboolean如果A或B或两者都为TRUE,则为TRUE,否则为FALSE.
A || Bboolean与A OR B相同.
NOT Aboolean如果A为FALSE则为TRUE,否则为FALSE.
!Aboolean与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,V>并且键具有类型K它返回与地图中的键对应的值.
SxS是结构它返回S的x字段.