大数据从入门到精通(超详细版)之Hive的函数,超级详细,可当做字典使用哦!!!

前言

嗨,各位小伙伴,恭喜大家学习到这里,不知道关于大数据前面的知识遗忘程度怎么样了,又或者是对大数据后面的知识是否感兴趣,本文是《大数据从入门到精通(超详细版)》的一部分,小伙伴们如果对此感谢兴趣的话,推荐大家按照大数据学习路径开始学习哦。

以下就是完整的学习路径哦。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

大数据从入门到精通文章体系!!!!!!!!!!!!!!

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

推荐大家认真学习哦!!!

上一篇文章我们主要讲了Hive的虚拟列的使用与数据抽样操作,接下来的文章我们将讲解Hive的函数使用。重点帮助大家学习函数的分类与常见的函数及其实际的操作用法。
在这里插入图片描述

函数的分类

Hive的函数分为两大类:内置函数(Built-in Functions)、用户定义函数UDF(User-Defined Functions)

  • 内置函数:Hive诞生时已经帮助我们定义好了的函数。
  • 用户定义函数:Hive本身不包含的,需要我们使用Hive本身的SDK去自定义开发。

接下来我们讲解的函数是最常用最实用的函数,而对于不常用的函数我们无法一一讲解,主打一个使用。

内置函数

查看函数列表

Hive当中的函数这么多,我们应该如何查看这些函数呢?

  • 使用show functions查看当下可用的所有函数;

    通过这条命令的结果得知,Hive拥有多达290条函数

    在这里插入图片描述

  • 通过describe function extended [funcname]来查看函数的使用方式。

    通过这条命令,我们可以看到具体函数的详细用法与解释。

    在这里插入图片描述

数值函数(Mathematical Functions )

  • 取整函数: round 返回double类型的整数值部分 (遵循四舍五入)

    select round(3.1415926);
    

    在这里插入图片描述

  • 指定精度取整函数: round(double a, int d) 返回指定精度d的double类型

    select round(3.1415926,4);
    

    在这里插入图片描述

  • 取随机数函数: rand 每次执行都不一样 返回一个0到1范围内的随机数

    select rand();
    

    在这里插入图片描述

  • 得到一个稳定的随机数序列,每次执行结果都一样

    select rand(3);
    

    在这里插入图片描述

    指定种子取随机数函数: rand(int seed) ;

  • 求数字的绝对值

    select abs(-3);
    

    在这里插入图片描述

  • 得到pi值(小数点后15位精度)

    select pi();
    

    在这里插入图片描述

集合函数(Collection Functions)

以下是集合函数全部内容,用到时进行查询即可

Return TypeName(Signature)Description
intsize(Map<K.V>)返回map类型的元素个数
intsize(Array)返回array类型的元素个数
arraymap_keys(Map<K.V>)返回map内的全部key(得到的是array)
arraymap_values(Map<K.V>)返回map内的全部value(得到的是array)
booleanarray_contains(Array, value)如果array包含指定value,返回True
arraysort_array(Array)根据数组元素的自然顺序按升序对输入数组进行排序并返回它
  1. ARRAY(expr1, expr2, ...)

    将多个表达式组成一个数组。 示例:ARRAY(1, 2, 3) 返回 [1, 2, 3]

  2. MAP(key1, value1, key2, value2, ...)

    将多个键值对组成一个映射。 示例:MAP(‘name’, ‘John’, ‘age’, 30) 返回 {‘name’: ‘John’, ‘age’: 30}

  3. STRUCT(expr1, expr2, ...)

    将多个表达式组成一个结构体。 示例:STRUCT(‘John’, 30) 返回 {name: ‘John’, age: 30}

  4. SIZE(collection):返回给定集合的大小。

    示例:SIZE(array_column) 返回数组的大小

  5. ELEMENT_AT(collection, index):返回给定集合中指定索引的元素。

    示例:ELEMENT_AT(array_column, 2) 返回数组中索引为2的元素

  6. ARRAY_CONTAINS(array, value):检查给定数组是否包含指定元素。

    示例:ARRAY_CONTAINS(array_column, 'value') 检查数组是否包含’value’

  7. MAP_KEYS(map):返回给定映射中所有键的数组。

    示例:MAP_KEYS(map_column) 返回映射中的所有键构成的数组

  8. MAP_VALUES(map):返回给定映射中所有值的数组。

    示例:MAP_VALUES(map_column) 返回映射中的所有值构成的数组

  9. TRANSFORM(array, expr, ...):对给定数组中的每个元素执行表达式,并返回结果数组。

    示例:TRANSFORM(array_column, x -> x + 1) 对数组中的每个元素执行加1操作

  10. FILTER(array, condition):对给定数组进行过滤,只返回符合条件的元素构成的新数组。

    示例:FILTER(array_column, x -> x > 5) 返回数组中大于5的元素构成的新数组

类型转换函数(Type Conversion Functions)

类型转换函数就两个,二进制和强行转换。

Return TypeName(Signature)Description
binarybinary(string|binary)将给定字符串转换为二进制
Expected “=” to follow “type”cast(expr as )将表达式 expr 的结果转换为给定类型 。例如,cast(‘1’ as BIGINT) 会将字符串 ‘1’ 转换为整数表示。如果转换不成功,则返回 null。对于cast(expr as boolean),对于非空字符串将会返回True

日期函数(Date Functions)

Return TypeName(Signature)Description
timestampcurrent_timestamp()返回当前时间戳。在同一个查询中对 current _ time戳的所有调用都返回相同的值。
datecurrent_date返回当前日期。在同一个查询中对current_date戳的所有调用都返回相同的值。
2.1.0版本之前返回string现在版本返回dateto_date(string timestamp)时间戳转日期
intyear(string date)quarter(date/timestamp/string)month(string date)day(string date) dayofmonth(date)hour(string date)minute(string date)second(string date)weekofyear(string date)得到给定时间的:年得到给定时间的:季度得到给定时间的:月得到给定时间的:日得到给定时间的:当前月份第几天得到给定时间的:小时得到给定时间的:分钟得到给定时间的:秒得到给定时间的:本年第几周
intdatediff(string enddate, string startdate)返回enddate 到 startdate之间的天数
2.1.0版本之前返回string现在版本返回datedate_add(date/timestamp/string startdate, tinyint/smallint/int days)date_sub(date/timestamp/string startdate, tinyint/smallint/int days)日期相加: date_add(‘2008-12-31’, 1) = ‘2009-01-01’.日期相减: date_sub(‘2008-12-31’, 1) = ‘2008-12-30’.

条件函数(Conditional Functions)

Return TypeName(Signature)Description
Tif(boolean testCondition, T valueTrue, T valueFalseOrNull)如果 testCondition 为 true,则返回 valueTrue,否则返回 valueFalseOrNull。
booleanisnull( a )如果 a NULL,则返回 true,否则返回 false。
booleanisnotnull ( a )如果 a 不****为 NULL,则返回 true,否则返回 false。
Tnvl(T value, T default_value)如果value为 null,则返回default_value,否则value。
TCOALESCE(T v1, T v2, …)返回第一个不是 NULL 的 v,如果所有 v 都是 NULL,则返回 NULL。
TCASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END当 a = b 时,返回 c; [当 a = d 时,返回 e]* ;否则返回 f。
TCASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] ENDWhen a = true, returns b; when c = true, returns d; else returns e.a可以是表达式,如1=1
Tnullif( a, b )如果 a=b,则返回 NULL;否则返回a 。等价:CASE WHEN a = b then NULL else a
voidassert_true(boolean condition)如果boolean_condition结果不为True,则引发异常报错比如:select assert_true (2<1).

示例:

if函数 : 判断truename字段是否为空,空的话返回“不知道名字” , 不为空的话返回字段本身

select if(truename is null , '不知道名字' ,truename ) from user;

字符串函数(String Functions)

Return TypeName(Signature)Description
stringconcat(string|binary A, string|binary B…)连接字符串For example, concat(‘foo’, ‘bar’) results in ‘foobar’
stringconcat_ws(string SEP, string A, string B…)同concat,但是可以自己定义字符串之间的分隔符(SEP)
intlength(string A)字符串长度
stringlower(string A)upper(string a)全部转小写全部转大写
stringtrim(string A)返回从 A 的两端裁剪空格得到的字符串。例如,trim(‘ foobar ’)的结果是‘ foobar’
arraysplit(string str, string pat)按照pat分隔字符串,pat是正则表达式

数据脱敏函数(Data Masking Functions)

Return TypeName(Signature)Description
stringmask_hash(string|char|varchar str)对字符串进行hash加密非字符串加密会得到NULL

加密示例:

select mask_hash('hadoop');

在这里插入图片描述

其他函数(Misc. Functions)

Return TypeName(Signature)Description
inthash(a1[, a2…]))返回参数的hash数字
stringcurrent_user()返回当前登录用户
stringcurrent_database()返回当前选择的数据库
stringversion()返回当前hive版本
stringmd5(string/binary)返回给定参数的md5值

以上就是Hive的内置函数的介绍了,大家认真学习吧。

结尾

恭喜小伙伴完成本篇文章的学习,相信文章的内容您已经掌握得十分清楚了,如果您对大数据的知识十分好奇,请接下来跟着学习路径完成大数据的学习哦,相信你会做到的~~~

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

据的学习哦,相信你会做到的~~~

大数据从入门到精通文章体系!!!!!!!!!!!!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木 木 水.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值