Hive的函数

     在Hive中,函数包括以下类型:

一、内置函数

1、数学函数

(1)round:四舍五入
         select round(数值,小数点位数);
(2)ceil:向上取整
       select ceil(45.6); --46
(3)floor:向下取整
       select floor(45.6); --45
2、字符函数

(1)lower:转成小写
	 select lower('Hive'); --hive
(2)upper:转成大写
	 select lower('Hive'); --HIVE
(3)length:长度
	 select length('Hive'); --4	
(4)concat:拼接字符串
	select concat('hello','Hive'); --helloHive
(5)substr:求子串
	 select substr('hive',2); --ive
	 select substr('hive',2,1); --i
 (6)trim:去掉前后的空格
         select trim('  hive   '); -hive
 (7)lpad:左填充
          对hive填充到10位,补位用#
	select lpad('hive',10,'#'); --######hive
 (8)rpad:右填充
       select rpad('hive',10,'#'); --hive######
3、收集函数 

select size(map(1,'yy',2,'xx')); --2 map结合的元素个数
4、转换函数

select cast(1 as float); --1.0
select cast('2016-05-22' as date); --2016-05-22
5、日期函数

(1)to_date
	select to_date('2015-05-22 15:34:23'); --2015-05-22
 (2)year
	select year('2015-05-22 15:34:23'); --2015
 (3)month
	select month('2015-05-22 15:34:23'); --5
 (4)day
	select day('2015-05-22 15:34:23'); --22
 (5)weekofyear
	select weekofyear('2015-05-22 15:34:23'); --21
  (6)datediff
	select datediff('2015-05-22 15:34:23','2015-05-29 15:34:23'); --[-7]
 (7)date_add
	select date_add('2015-05-22 15:34:23',2); --2015-05-24
 (8)date_sub
	select date_sub('2015-05-22 15:34:23',2); --2015-05-20
6、条件函数

coalesce:从左到右返回第一个不为null的值

case...when...:条件表达式

select ename,job,sal,
	       case job when 'president' then sal+100
			when 'manager'	then sal+800
			else sal+400
		end
	from emp;

二、聚合函数

(1)count:总数
(2)sum:和
(3)max:最大值
(4)min:最小值
(5)avg:平均数
  转换成MR作业

三、表生成函数  

select explode(map(1,'xx',2,'yy',3,'zz'));
   转换成MR作业,其结果如下

1	xx
2	yy
3	zz

### Hive内置函数概述 Hive 提供了大量的内置函数,用于支持数据处理中的各种操作需求。这些函数可以通过 `show functions` 命令查看完整的列表[^1]。对于特定的函数,可以使用 `desc function 函数名` 查看其基本描述,而更详细的用法则可通过 `desc function extended 函数名` 获取。 #### 内置函数分类 Hive 的内置函数通常分为以下几类: 1. **字符串函数** 例如 `upper()` 将字符串转换为大写形式,或者 `concat()` 进行字符串拼接。 2. **数值函数** 如 `abs(x)` 返回绝对值,`round(x)` 对浮点数四舍五入等。 3. **日期时间函数** 比如 `from_unixtime(unix_time, format)` 和 `unix_timestamp(date_string, pattern)` 可以实现 Unix 时间戳与标准时间格式之间的相互转换。 4. **集合与数组函数** 支持对复杂类型的处理,像 `array_contains(array, value)` 判断某个值是否存在于数组中。 5. **条件判断函数** 包括但不限于 `if(condition, true_value, false_value)` 或者 `case when ... then ... end`. 6. **聚合函数** 主要用于统计分析场景下的汇总计算,比如 `sum(column_name)`, `count(*)`, `avg(field)`. 7. **窗口函数** 实现基于分区的数据排序和排名等功能,典型代表有 `rank() over (...)`, `dense_rank() over (...)`. 8. **其他特殊用途的功能型函数** - `hash(a1, a2,...)` 计算输入参数组合后的散列值][^[^32]。 - `java_method(class, method [, arg1 [,arg2...]])`: 动态加载 Java 类并执行指定的方法调用[^3]. 以下是几个常用函数的具体说明及其语法示例: #### 示例代码展示部分重要功能的应用方式 ```sql -- 字符串转大写的例子 SELECT upper('hello world'); -- 数学运算取整的例子 SELECT round(3.1415); -- 处理日期时间字段 SELECT from_unixtime(UNIX_TIMESTAMP(), 'yyyy-MM-dd HH:mm:ss') AS current_datetime; -- 使用反射机制调用外部Java逻辑 SELECT java_method('java.lang.Math', 'sqrt', 16); ``` 以上仅列举了一小部分内容作为示范;实际应用过程中可以根据具体业务需求深入探索更多可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值