什么是 Hive 查询语言:HiveQL 运算符
什么是 Hive 查询语言 (HiveQL)?
Hive 查询语言 (HiveQL) 是 Apache Hive 中用于处理和分析结构化数据的一种查询语言。它让用户摆脱了 MapReduce 编程的复杂性。它重用了关系型数据库的常用概念,例如表、行、列和模式,以降低学习难度。Hive 提供了一个 CLI,用于使用 Hive 查询语言 (HiveQL) 编写 Hive 查询。
大多数交互都通过命令行界面 (CLI) 进行。通常,HiveQL 语法与大多数数据分析师熟悉的 SQL 语法相似。Hive 支持四种文件格式:TEXTFILE、SEQUENCEFILE、ORC 和 RCFILE (Record Columnar File)。
Hive 使用 derby 数据库进行单用户元数据存储,对于多用户元数据或共享元数据,Hive 使用 MYSQL。
HiveQL 内置运算符
Hive 提供内置运算符,用于在 Hive 数据仓库中的表上实现数据操作。
这些运算符用于对操作数执行数学运算,并根据应用的逻辑返回特定值。
以下是 HiveQL 中内置运算符的主要类型:
- 关系运算符
- 算术运算符
- 逻辑运算符
- 复杂类型运算符
- 复杂类型构造函数
Hive SQL 中的关系运算符
我们使用关系运算符来比较两个操作数之间的关系。
- 例如等于、不等于、小于、大于等运算符。
- 在这些运算符中,操作数类型均为数字类型。
下表将提供有关关系运算符及其在 HiveQL 中用法的详细信息。
内置运算符 | 描述 | 操作数 |
---|---|---|
X = Y | 真
如果表达式 X 等于表达式 Y,则返回 TRUE。 否则返回 FALSE。 |
接受所有基本类型。 |
X != Y | 真
如果表达式 X 不等于表达式 Y,则返回 TRUE。 否则返回 FALSE。 |
接受所有基本类型。 |
X < Y | 真
如果表达式 X 小于表达式 Y,则返回 TRUE。 否则返回 FALSE。 |
接受所有基本类型。 |
X <= Y | 真
如果表达式 X 小于或等于表达式 Y,则返回 TRUE。 否则返回 FALSE。 |
接受所有基本类型。 |
X>Y | 真
如果表达式 X 大于表达式 Y,则返回 TRUE。 否则返回 FALSE。 |
接受所有基本类型。 |
X>= Y | 真
如果表达式 X 大于或等于表达式 Y,则返回 TRUE。 否则返回 FALSE。 |
接受所有基本类型。 |
X IS NULL | 如果表达式 X 的计算结果为 NULL,则返回 TRUE,否则返回 FALSE。 | 接受所有类型。 |
X IS NOT NULL | 假
如果表达式 X 的计算结果不为 NULL,则返回 TRUE,否则返回 FALSE。 |
接受所有类型。 |
X LIKE Y | 真
如果字符串模式 X 匹配 Y,则返回 TRUE,否则返回 FALSE。 |
仅接受字符串。 |
X RLIKE Y | 如果 X 或 Y 为 NULL,则返回 NULL;如果 X 的任何子字符串匹配 Java 正则表达式 Y,则返回 TRUE,否则返回 FALSE。 | 仅接受字符串。 |
X REGEXP Y | 与 RLIKE 相同。 | 仅接受字符串。 |
HiveQL 算术运算符
我们使用算术运算符对操作数执行算术运算。
- 我们使用这些运算符来执行操作数之间的算术运算,例如加法、减法、乘法和除法。
- 在这些运算符中,操作数类型均为数字类型。
示例
2 + 3 的结果是 5。
在此示例中,‘+’ 是运算符,2 和 3 是操作数。返回值是 5。
下表将提供有关 Hive 查询语言中算术运算符的详细信息。
内置运算符 | 描述 | 操作数 |
---|---|---|
X + Y | 返回 X 和 Y 相加的结果。 | 接受所有数字类型。 |
X – Y | 返回 X 减去 Y 的结果。 | 接受所有数字类型。 |
X * Y | 返回 X 和 Y 相乘的结果。 | 接受所有数字类型。 |
X / Y | 返回 X 除以 Y 的结果。 | 接受所有数字类型。 |
X % Y | 返回 X 除以 Y 的余数。 | 接受所有数字类型。 |
X & Y | 返回 X 和 Y 的按位 AND 运算结果。 | 接受所有数字类型。 |
X | Y | 返回 X 和 Y 的按位 OR 运算结果。 | 接受所有数字类型。 |
X ^ Y | 返回 X 和 Y 的按位 XOR 运算结果。 | 接受所有数字类型。 |
~X | 返回 X 的按位 NOT 运算结果。 | 接受所有数字类型。 |
Hive QL 逻辑运算符
我们使用逻辑运算符对操作数执行逻辑运算。
- 我们使用这些运算符来执行操作数之间的逻辑运算,例如 AND、OR、NOT。
- 在这些运算符中,操作数类型均为 BOOLEAN 类型。
下表将提供有关 HiveSQL 中逻辑运算符的详细信息。
运算符 | 描述 | 操作数 |
---|---|---|
X AND Y | 如果 X 和 Y 都为 TRUE,则返回 TRUE,否则返回 FALSE。 | 仅接受布尔类型。 |
X && Y | 与 X AND Y 相同,但此处使用 && 符号。 | 仅接受布尔类型。 |
X OR Y | 如果 X 或 Y 或两者都为 TRUE,则返回 TRUE,否则返回 FALSE。 | 仅接受布尔类型。 |
X || Y | 与 X OR Y 相同,但此处使用 || 符号。 | 仅接受布尔类型。 |
NOT X | 如果 X 为 FALSE,则返回 TRUE,否则返回 FALSE。 | 仅接受布尔类型。 |
!X | 与 NOT X 相同,但此处使用 ! 符号。 | 仅接受布尔类型。 |
复杂类型运算符
下表将提供有关复杂类型运算符的详细信息。这些运算符提供了访问复杂类型元素的不同机制。
运算符 | 操作数 | 描述 |
---|---|---|
A[n] | A 是一个数组,n 是一个整数类型。 | 返回数组 A 中的第 n 个元素。第一个元素的索引为 0。 |
M[key] | M 是一个 Map<K, V>,key 的类型为 K。 | 返回 Map 中属于该 key 的值。 |
复杂类型构造函数
下表将提供有关复杂类型构造函数的详细信息。它将构造复杂数据类型的实例。这些是 Hive 中复杂的数组、Map 和 Struct 类型。
在本节中,我们将介绍对复杂类型构造函数执行的操作。
运算符 | 操作数 | 描述 |
---|---|---|
array | (val1, val2, …) | 使用提供的元素(如 val1、val2)创建一个数组。 |
create_union | (tag, val1, val2, …) | 使用 tag 参数指定的相应值创建一个联合类型。 |
map | (key1, value1, key2, value2, …) | 使用操作数中指定的键/值对创建一个 Map。 |
named_struct | (name1, val1, name2, val2, …) | 使用操作数中指定的字段名和值创建一个 Struct。 |
STRUCT | (val1, val2, val3, …) | 使用提供的字段值创建一个 Struct。Struct 的字段名将是 col1、col2 等。 |
摘要
- Hive 查询语言 (HiveQL) 是 Apache Hive 中用于处理和分析结构化数据的一种查询语言。
- Hive 提供内置运算符,用于在 Hive 数据仓库中的表上实现数据操作。
- HiveQL 中内置运算符的类型是:
- 关系运算符
- 算术运算符
- 逻辑运算符
- 复杂类型运算符
- 复杂类型构造函数