什么是 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 中内置运算符的类型是:
  • 关系运算符
  • 算术运算符
  • 逻辑运算符
  • 复杂类型运算符
  • 复杂类型构造函数