Hive入门之UDFS函数
一.UDFS函数介绍
1. 基本UDF
(1)SHOWFUNCTIONS:这个用来熟悉未知函数。
DESCRIBE FUNCTION<function_name>;
(2)A IS NULL
A IS NOT NULL
(3)A LIKE B 普通sql匹配如 like “a%”
A RLIKE B通过正则表达式匹配
A REGEXP B 通过正则表达式匹配
(4)round(double a):四舍五入
(5)rand(),rand(int seed):返回在(0,1)平均分布的随机数
(6)COALESCE(pv, 0):将 pv 为 null 的行转为0,很实用
2. 日期函数
(1)datediff(string enddate, stringstartdate):
返回enddate和startdate的天数的差,例如datediff('2009-03-01','2009-02-27') = 2
(2)date_add(stringstartdate, int days):
加days天数到startdate:date_add('2008-12-31', 1) ='2009-01-01'
(3)date_sub(stringstartdate, int days):
减days天数到startdate:date_sub('2008-12-31', 1) ='2008-12-30'
(4)date_format(date,date_pattern)
CREATETEMPORARY FUNCTION date_format AS'com.taobao.hive.udf.UDFDateFormat';
根据格式串format 格式化日期和时间值date,返回结果串。
date_format('2010-10-10','yyyy-MM-dd','yyyyMMdd')
(5)str_to_date(str,format)
将字符串转化为日期函数
3. 字符串函数
(1)length(stringA):返回字符串长度
(2)concat(stringA, string B...):
合并字符串,例如concat('foo','bar')='foobar'。注意这一函数可以接受任意个数的参数
(3)substr(stringA, int start) substring(string A,int start):
返回子串,例如substr('foobar',4)='bar'
(4)substring(string A, int start,int len):
返回限定长度的子串,例如substr('foobar',4, 1)='b'
(5)split(stringstr, string pat):
返回使用pat作为正则表达式分割str字符串的列表。例如,split('foobar','o')[2] = 'bar'。
(6)getkeyvalue(str,param):
从字符串中获得指定 key 的 value 值 UDFKeyValue
4. 自定义函数
(1)row_number
create temporary function row_number as 'function_name';
select ip,uid,row_number(ip,uid) from (
select ip,uid,logtime from atpanel
distribute by ip,uid
sort by ip,uid,logtime desc) a
(2)拆分key_value键值对
CREATE TEMPORARY FUNCTION ExplodeEX AS 'com.taobao.hive.udtf.UDTFExplodeEX';
select
split(kvs,'_')[0] as key,
split(kvs,'_')[1] as key,
from ( select 'a-1|b-2' as kv from dual ) t
lateral view explode (split(kv,'\\|')) result as kvs
Hive入门之UDFS函数的更多相关文章
- 第1章 Hive入门
第1章 Hive入门 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提 ...
- Hive Tutorial(上)(Hive 入门指导)
用户指导 Hive 指导 Hive指导 概念 Hive是什么 Hive不是什么 获得和开始 数据单元 类型系统 内置操作符和方法 语言性能 用法和例子(在<下>里面) 概念 Hive是什么 ...
- hive 调用java的函数和科学记数法转换
hive中field如果是string,比如id,那么使用10000000000+id结果是科学计数法显示,转换为正常显示方法: select (10000000000+cast(id as int) ...
- 4 weekend110的hive入门
查看企业公认的最新稳定版本: https://archive.apache.org/dist/ Hive和HBase都很重要,当然啦,各自也有自己的替代品. 在公司里,SQL有局限,大部 ...
- hadoop笔记之Hive入门(Hive的体系结构)
Hive入门(二) Hive入门(二) Hive的体系结构 ○ Hive的元数据 Hive将元数据存储在数据库中(metastore),支持mysql.derby.oracle等数据库,Hive默认是 ...
- hadoop笔记之Hive入门(什么是Hive)
Hive入门(一) Hive入门(一) 什么是Hive? Hive是个数据仓库,数据仓库就是数据库,但又与一般意义上的数据库有点区别 实际上,Hive是构建在hadoop HDFS上的一个数据仓库. ...
- [Hive_11] Hive 的高级聚合函数
0. 说明 Hive 的高级聚合函数 union all | grouping sets | cube | rollup pv //page view 页面访问量 uv //user view 访问人 ...
- [Hive_6] Hive 的内置函数应用
0. 说明 Hive 的内置函数的基本操作 | 时间函数 | String 函数 | 条件语句 | explode | split | substring 1. 基本操作 查看函数 show func ...
- Hive入门学习随笔(一)
Hive入门学习随笔(一) ===什么是Hive? 它可以来保存我们的数据,Hive的数据仓库与传统意义上的数据仓库还有区别. Hive跟传统方式是不一样的,Hive是建立在Hadoop HDFS基础 ...
随机推荐
- android手动改动density(dpi)的方法
Android系统中会依据屏幕分辨率范围,制定默认的density,既320(xhdpi),那么我们也能够手动改动density. 改动的方式在system.prop中改动ro.sf.lcd_dens ...
- .net通用权限框架B/S(二) 数据库设计
1.组织机构---员工是1:n关系 2.角色---员工n:n 3.角色--导航菜单n:n 4.操作权限(id)---导航菜单(prms_id)n:n [此处是n:n关系正常是生成第三张表存放多对多 ...
- 今天是迅驰ORM的诞生之日。
欢迎各位朋友来造访,最主要还是那一点:版权所有,请尊重驰哥的著作版权,侵权必追究法律责任. 最后来一句刘德华的歌曲:独自去偷欢,我谢绝你监管!快乐心中常为我伴.
- Android 根据EditText搜索框ListView动态显示数据
根据EditText搜索框ListView动态显示数据是根据需求来的,觉得这之中涉及的东西可能比较的有意思,所以动手来写一写,希望对大家有点帮助. 首先,我们来分析下整个过程: 1.建立一个layou ...
- Eclipse下运行拷贝的项目,更改项目名后报404
右键项目->Properties->Web Project Settings 将“Context root”改为你的项目名称
- tomcat的catalina
Tomcat的核心分为3个部分: (1)Web容器---处理静态页面: (2)catalina --- 一个servlet容器-----处理servlet; (3)还有就是JSP容器,它就是把jsp页 ...
- lightoj 1104 Birthday Paradox
题意:给定一个一年的天数,求最少多少人可以使至少两人生日同一天的概率不少于0.5. 用二分去做.检验一个数是否符合时,刚开始实用普通的方法,直接计算,超时了~~,上网搜了一下代码,一位大神使用一个数组 ...
- OpenCV学习(2)--基本数据结构
OpenCV的基本数据结构 CvPoint:表示图像中的点 CvPoint2D32f:二维空间中的点 CvPoint3D32f:三维空间中的点 这些都是结构体,并不是C++语言中的类,所以他们的构造函 ...
- 关于继承UITableViewController若干问题
// // MSHomeCommentTableViewController.m // xiaoqu-ios // // Created by Charlie on 15/7/1. // Copyri ...
- 获取IP地址(简单实现)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket ...