一、内置函数
1.一般常用函数
1.取整函数
round() 当传入第二个参数则为精度
bround() 银行家舍入法:为5时,前一位为偶则舍,奇则进。
2.向下取整
floor()
3.向上取整
ceil/ceiling()
4.生成随机数
rand () 范围[0,1),传入种子时生成稳定随机数
5.自然指数函数
exp () e的n次方
log10 () 10为底的对数函数
ln() e为底的对数函数
log(base,v)base为底的函数
6.幂函数
pow/power (base,exponent)
7.根函数
aqrt() 开平发
cbrt() 开立方
8.绝对值函数
abs()
9.进制转换
bin() 转二进制
hex() 转十六进制
unhex() 反转十六进制
conv(v,from,to) 进制转换函数
10时间函数
unix_timestamp() 获取时间
from_unixtime(ut,formats) ut转为日期字符串
unix_timestamp(timestr,fs) 日期转化ut
to_data(timestr) 返回日期部分
year(timestr) 返回指定部分,其他类似
datediff(endDate,startD) 日期比较函数(返回日期之间的天数)
date_add(startDate,days) 日期增加,返回当前日期计算后的日期字符串
date_sub(startDate,days) 日期减少
2.字符串常用函数
1.取长度
length()
2.反转
reverse()
3.字符串连接函数
concat(strS) 无分隔符连接
concat_ws(separator,strS) 分隔符连接
4.字符串截取
substr/substring(str,index) 为正截取至此,为负截取后index个
~~~~(str,index,length) 从index截取length个字符,正左负右
5.大小写转换
upper/ucase ()
lower/lcase ()
6.去空格函数
trim() 两边去空格
ltrim() 左边去空格
rtrim() 右边去空格
7.正则表达式
regexp_replace(str,rge,replace) 替换字符串
regexp_extract(str,reg,index) 查找匹配字符,0返回全部,1返回第一个括号里的
8.URL解析函数
parse_url (str,’{extractPart}’[,’{extractKey}’])
选项有:[HOST,PATH,QUERY,REF,PROTOCOL,FILE,AUTHORITY,USERINFO]
select parse_url('http://facebook.com/path/p1.php?query=1', 'HOST') from dual;---facebook.com
9.json函数
get_json_object(jsonstr,'$.name')
10.字符串生成和补足函数
space(n) 空字符串
repeat(str,n) 重复字符串
lpad(str,legth,addstr) 左补足
split(str,splitstr) 字符串分割
二、自定义函数
自定义函数加载步骤 -> 只对当前会话有效
(1)新建项目 - JavaProject
(2)将hive-exec-1.2.2.jar添加至构建路径中
(3)新建包 -> 新建类(继承UDF)
(4)新建方法evaluate -> 指定返回值类型和参数列表
(5)导出项目 -> jar包(只需要包含src下的内容)
(6)上传jar包至Linux系统
(7)打开Hive会话
(8)加载jar包:add jar /home/bigdata/udf.jar; -> 将jar包添加至构建路径(类的搜索加载路径)
(9)将jar包中的类进行函数的命名
create temporary function sub as 'com.sand.udf.SubString';
(10)show functions; -> 验证是否添加成功
三、创建虚表
为了方便测试,可仿照oracle创建dual表
1.新建一个dual表
create table dual(dummy string);
2.创建仅包含X的文件
echo X >/home/hadoop/dual.txt
3.上传数据
load data local inpath '/home/hadoop/dual.txt' overwrite into table dual;
4.测试
select 1+1 from dual ; 返回2则成功