0
点赞
收藏
分享

微信扫一扫

AttributeError : ‘MergedCell‘ object attribute ‘value‘ is read-only

1、函数分类

Hive函数对应的官方文档: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
​
​
原生分类标准:  内置函数(Hive官方写好的,咱们直接用即可) 和 用户自定义函数(UDF,UDAF,UDTF)
​
分类标准扩大化:  本来,UDF 、UDAF、UDTF这3个标准是针对用户自定义函数分类的; 但是,现在可以将这个分类标准扩大到hive中所有的函数,包括内置函数和自定义函数;
​
目前hive三大标准
UDF: 用户自定义函数user define function。特点:输入一条返回一条,也就是【一对一】的关系
UDAF: 用户自定义聚合函数user define aggregate function。特点:输入多条返回一条,也就是【多对一】的关系
UDTF: 用户自定义表数据生成函数user define table-generation function。特点:输入一条返回多条,也就是【一对多】的关系
​
查询所有hive函数名称: show functions;
查看某函数使用帮助文档: desc function [extended] 函数名;         
注意: 加上extended关键字能查看详细信息示例

示例:

show tables;
show databases;
​
-- 查看Hive中有哪些函数列表
show functions;
​
-- 查看函数的具体说明
describe function extended count;
describe function extended avg;

2、复杂类型函数

hive复杂类型:   array  struct  map
​
array类型: 又叫数组类型,存储同类型的单数据的集合
     取值: 字段名[索引]   注意: 索引从0开始
     获取长度的函数: size(字段名)       常用
     判断是否包含某个数据的函数: array_contains(字段名,某数据)   常用
     对数组进行排序的函数: sort_array(数组)
​
struct类型: 又叫结构类型,可以存储不同类型单数据的集合
     取值: 字段名.子字段名n
    
map类型: 又叫映射类型,存储键值对数据的映射(根据key找value)
    取值: 字段名[key]
    获取长度的函数: size(字段名)        常用       
    获取所有key的函数: map_keys()            常用 
    获取所有value的函数: map_values()        常用 

示例:

-- 演示集合函数
select array('binzi','666','888');
select size(array('binzi','666','888'));
select array_contains(array('binzi','666','888'),'binzi');
​
-- 复杂数据类型(补充sort_array)
select array(4,2,3,5,1); -- 创建一个数组
select sort_array(array(4,2,3,5,1));  -- 只能升序排序
describe function extended sort_array;
​
​
select map('a',1,'b',2,'c',3);
select size(map('a',1,'b',2,'c',3));
select map_keys(map('a',1,'b',2,'c',3));-- ["a","b","c"]
select map_values(map('a',1,'b',2,'c',3));-- [1,2,3]

3、数学函数

常用:
round: round(字段名称[,小数的位数]),对数据进行四舍五入
ceil: 得到大于字段值的最小整数
floor: 得到小于字段值的最大整数
​
​
不常用:
rand: 随机生成0-1的数据
pi: 生成Π的结果

示例:

select "hello world" as f;
select 12123 as f;
​
-- 复杂数据类型(补充sort_array)
select array(4,2,3,5,1); -- 创建一个数组
select sort_array(array(4,2,3,5,1));  -- 只能升序排序
​
describe function extended sort_array;
​
-- 数学函数
-- round(字段名称[,小数的位数]):对数据进行四舍五入
select round(3.1415926);
select round(3.1415926,2);
select round(3.140123,3);
​
select age*1.2 from students;
select round(age*id) from students;
​
-- rand([seed]):随机生成0-1的数据。可以传递seed这个随机种子(了解)
select rand();
select rand(10);
describe function extended rand;
​
-- ceil(字段):得到大于字段值的最小整数
select ceil(1.999999999); -- 2
select ceil(1.00000001); -- 2
​
-- floor(字段):得到小于字段值的最大整数
select floor(1.999999999); -- 1
select floor(0.999999999); -- 0
​
-- pi:生成Π的结果
select pi();
举报

相关推荐

0 条评论