Hive 函数:内置函数和 UDF [用户定义函数] 示例


函数是为了特定目的而构建的,用于对表列名的操作数执行数学、算术、逻辑和关系等运算。

内建功能

这些是 Hive 中已有的函数。首先,我们必须检查应用程序需求,然后才能在我们的应用程序中使用这些内置函数。我们可以在应用程序中直接调用这些函数。

语法和类型在下一节中提到。

HIVE 中的内置函数类型

  • 采集功能
  • 日期函数
  • 数学函数
  • 条件函数
  • 字符串函数
  • 杂项功能

采集功能

这些函数用于集合。集合是指元素的分组,并返回单个或元素数组,具体取决于函数名称中提到的返回类型。

返回类型 功能名称 描述
INT 尺寸(地图) 它将获取并给出地图类型中的组件编号
INT 大小(数组) 它将获取并给出数组类型中的元素编号
大批 Map_keys(地图) 它将获取并返回一个包含输入映射的键的数组。这里的数组是无序的
大批 Map_values(地图) 它将获取并给出一个包含输入映射值的数组。这里的数组是无序的
大批 Sort_array(数组) 按数组和元素的升序对输入数组进行排序并返回

日期函数

这些用于执行日期操作和日期类型从一种类型到另一种类型的转换:

功能名称 返回类型 描述
Unix_Timestamp() BigInt有 我们将获得最新 Unix的 时间戳(以秒为单位)
To_date(字符串时间戳) 绳子 它将获取并给出时间戳字符串的日期部分:
年份(字符串日期) INT 它将获取日期或时间戳字符串中的年份部分
季度(日期/时间戳/字符串) INT 它将获取并给出 1 到 4 范围内的日期、时间戳或字符串的季度
月(字符串日期) INT 它将给出日期或时间戳字符串的月份部分
小时(字符串日期) INT 它将获取并给出时间戳的小时数
分钟(字符串日期) INT 它将获取并给出时间戳的分钟数
Date_sub(字符串开始日期,int 天数) 绳子 它将获取并减去开始日期的天数
当前日期 日期 它将在查询评估开始时获取并提供当前日期
LAST _day(字符串日期) 绳子 它将获取并给出日期所属月份的最后一天
trunc(字符串日期,字符串格式) 绳子 它将获取并给出按格式指定的单位截断的日期。

其中支持的格式:

月/月,年/年/年。

数学函数

这些函数用于数学 Operations。我们不需要创建 UDF,而是在 Hive 中使用一些内置数学函数。

功能名称 返回类型 描述
圆形(双X) 双盒套装 它将获取并返回 X 的四舍五入的 BIGINT 值
圆形(DOUBLE X,INT d) 双盒套装 它将获取并返回四舍五入到小数点后 d 位的 X
圆形(DOUBLE X) 双盒套装 它将使用 HALF_EVEN 舍入模式获取并返回 X 的舍入 BIGINT 值
地板(DOUBLE X) 大数据 它将获取并返回等于或小于 X 值的最大 BIGINT 值
天花板(DOUBLE a),天花板(DOUBLE a) 大数据 它将获取并返回等于或大于 X 值的最小 BIGINT 值
rand(),rand(INT 种子) 双盒套装 它将获取并返回一个从 0 到 1 均匀分布的随机数

条件函数

这些函数用于条件值检查。

功能名称 返回类型 描述
if(布尔测试条件,T 值 True,T 值 FalseOrNull) T 当以下情况时,它将获取并返回 True 值
测试条件为真,
否则给出值 False 或 Null。
ISNULL(X) 布尔 如果 X 为 NULL,它将获取并返回 true,否则返回 false。
不为空(X) 布尔 如果 X 不为 NULL,它将获取并返回 true,否则返回 false。

字符串函数

字符串操作和字符串操作这些函数都可以调用。

功能名称 返回类型 描述
反转(字符串 X) 绳子 它将给出 X 的反转字符串
rpad(字符串 str,整数长度,字符串 pad) 绳子 它将获取并给出 str,用 pad 向右填充,长度为 length(整数值)
rtrim(字符串 X) 绳子 它将获取并返回从 X 的末尾(右侧)修剪空格后得到的字符串
举个例子, rtrim(' results ') 导致 ' results'
空格(INT n) 绳子 它将获取并给出一个由 n 个空格组成的字符串。
拆分(STRING str,STRING pat) 排列 围绕 pat 分割 str (pat 是一个正则表达式)。
Str_to_map(文本[, 分隔符1, 分隔符2]) 地图 它将使用两个分隔符将文本拆分为键值对。

UDF(用户定义函数)

在 Hive 中,用户可以定义自己的函数来满足某些客户端需求。这些在 Hive 中称为 UDF。用 Java 对于特定模块。

一些 UDF 是专门为应用程序框架中的代码可重用性而设计的。开发人员将在 Java 并将这些 UDF 与 Hive 集成。

在查询执行过程中,开发人员可以直接使用代码,UDF 将根据用户定义的任务返回输出。它将在编码和执行方面提供高性能。

例如,对于字符串词干提取,我们在 Hive 中没有任何预定义函数。为此,我们可以在 Java无论我们在哪里需要 Stem 功能,我们都可以在 Hive 中直接调用这个 Stem UDF。

这里的词干功能是指从词根派生出单词。就像词干提取算法将单词“wishing”、“wished”和“wishes”简化为词根“wish”。为了执行这种类型的功能,我们可以在 Java 并将其与 蜂房.

根据用例,可以编写 UDF。它将接受并产生不同数量的输入和输出值。

一般类型的 UDF 会接受单个输入值并产生单个输出值。如果在查询中使用 UDF,则结果数据集中的每一行都会调用一次 UDF。

另一方面,它可以接受一组值作为输入并返回单个输出值。