博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive入门之UDFS函数
阅读量:5204 次
发布时间:2019-06-13

本文共 1831 字,大约阅读时间需要 6 分钟。

一.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  

 

转载于:https://www.cnblogs.com/sunfie/p/4374837.html

你可能感兴趣的文章
静态变量数组实现LRU算法
查看>>
在SQL中怎么把一列字符串拆分为多列
查看>>
中文系统 上传file的input显示英文
查看>>
css样式写一个三角形
查看>>
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
javascript获取textarea中所选文本的开始位置、结束位置和选择的文本
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>
事务备份还原分离附加
查看>>
JSch - Java实现的SFTP(文件上传详解篇)
查看>>
一些注意点
查看>>
.net 文本框只允许输入XX,(正则表达式)
查看>>
C#修饰符
查看>>
20.核心初始化之异常向量表
查看>>
[BSGS][哈希]luogu P3846 可爱的质数
查看>>
Python 第四十五章 MySQL 内容回顾
查看>>
iostat参数说明
查看>>
js 封装获取元素的第一个元素
查看>>
iOS 获取Home键指纹验证
查看>>
Python-Mac 安装 PyQt4
查看>>