hive 查看函数:

show  functions;

desc functions 函数名

1. 时间函数

1.1 时间戳函数
--日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数
select unix_timestamp(); --获得当前时区的UNIX时间戳
select unix_timestamp('2017-09-15 14:23:00'); 
select unix_timestamp('2017-09-15 14:23:00','yyyy-MM-dd HH:mm:ss');
select unix_timestamp('20170915 14:23:00','yyyyMMdd HH:mm:ss');

--时间戳转日期
select from_unixtime(1505456567); 
select from_unixtime(1505456567,'yyyyMMdd'); 
select from_unixtime(1505456567,'yyyy-MM-dd HH:mm:ss'); 
select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss'); --获取系统当前时间

1.2 获取当前日期: current_date
hive> select current_date from dual
2017-09-15

1.3 日期时间转日期:to_date(string timestamp) 
hive> select to_date('2017-09-15 11:12:00') from dual;
2017-09-15

1.4 获取日期中的年/月/日/时/分/秒/周
with dtime as(select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') as dt)
select year(dt),month(dt),day(dt),hour(dt),minute(dt),second(dt),weekofyear(dt)
  from dtime
  
1.5 计算两个日期之间的天数: datediff
hive> select datediff('2017-09-15','2017-09-01') from dual;  
14

1.6 日期增加和减少: date_add/date_sub(string startdate,int days)
hive> select date_add('2017-09-15',1) from dual;    
2017-09-16
hive> select date_sub('2017-09-15',1) from dual;    
2017-09-14

--其他日期函数
查询当前系统时间(包括毫秒数): current_timestamp;  
查询当月第几天: dayofmonth(current_date);
月末: last_day(current_date)
当月第1天: date_sub(current_date,dayofmonth(current_date)-1)
下个月第1天: add_months(date_sub(current_date,dayofmonth(current_date)-1),1)

2.字符串函数

--正则表达式替换函数:regexp_replace
语法: regexp_replace(string A, string B, string C) 
返回值: string
说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符
举例:
hive> select regexp_replace(‘foobar’, ‘oo|ar’, ”) from dual;
fb

正则表达式解析函数:regexp_extract
语法: regexp_extract(string subject, string pattern, int index) 
返回值: string
说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。注意,在有些情况下要使用转义字符
举例:
hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 1) from dual;
the
hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2) from dual;
bar
hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 0) from dual;
foothebar

0表示把整个正则表达式对应的结果全部返回

1表示返回正则表达式中第一个() 对应的结果 以此类推

URL解析函数:parse_url
语法: parse_url(string urlString, string partToExtract [, string keyToExtract]) 
返回值: string
说明:返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

举例:
* parse_url('http://facebook.com/path/p1.php?query=1', 'HOST')返回'facebook.com' 
* parse_url('http://facebook.com/path/p1.php?query=1', 'PATH')返回'/path/p1.php' 
* parse_url('http://facebook.com/path/p1.php?query=1', 'QUERY')返回'query=1',
可以指定key来返回特定参数,例如
* parse_url('http://facebook.com/path/p1.php?query=1', 'QUERY','query')返回'1',

* parse_url('http://facebook.com/path/p1.php?query=1#Ref', 'REF')返回'Ref' 
* parse_url('http://facebook.com/path/p1.php?query=1#Ref', 'PROTOCOL')返回'http'

json解析函数:get_json_object
语法: get_json_object(string json_string, string path) 
返回值: string

说明:解析json的字符串json_string,返回path指定的内容。

第一个参数(string json_string)填写json对象变量,第二个参数(string path)使用$表示json变量标识,然后用 . 或 [] 读取对象或数组;

如果输入的json字符串无效,那么返回NULL。 
每次只能返回一个数据项。
举例:

  1. data =
  2. {
  3. "store":
  4. {
  5. "fruit":[{"weight":8,"type":"apple"}, {"weight":9,"type":"pear"}],
  6. "bicycle":{"price":19.95,"color":"red"}
  7. },
  8. "email":"amy@only_for_json_udf_test.net",
  9. "owner":"amy"
  10. }

get单层值

hive> select get_json_object(data, '$.owner') from test;
结果:amy
get多层值.

hive> select get_json_object(data, '$.store.bicycle.price') from test;
结果:19.95
get数组值[]

hive> select get_json_object(data, '$.store.fruit[0]') from test;
结果:{"weight":8,"type":"apple"}

如request ={“store”: {“fruit”:[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],  “bicycle”:{“price”:19.95,”color”:”red”}  }

>get_json_object(request,'$.weight')

8

空格字符串函数:space
语法: space(int n) 
返回值: string
说明:返回长度为n的字符串
举例:
hive> select space(10) from dual;
hive> select length(space(10)) from dual;
10

重复字符串函数:repeat
语法: repeat(string str, int n) 
返回值: string
说明:返回重复n次后的str字符串
举例:
hive> select repeat(‘abc’,5) from dual;
abcabcabcabcabc

首字符ascii函数:ascii
语法: ascii(string str) 
返回值: int
说明:返回字符串str第一个字符的ascii码
举例:
hive> select ascii(‘abcde’) from dual;
97

左补足函数:lpad
语法: lpad(string str, int len, string pad) 
返回值: string
说明:将str进行用pad进行左补足到len位
举例:
hive> select lpad(‘abc’,10,’td’) from dual;
tdtdtdtabc
与GP,ORACLE不同,pad 不能默认

右补足函数:rpad
语法: rpad(string str, int len, string pad) 
返回值: string
说明:将str进行用pad进行右补足到len位
举例:
hive> select rpad(‘abc’,10,’td’) from dual;
abctdtdtdt

分割字符串函数: split
语法:  split(string str, string pat) 
返回值:  array
说明: 按照pat字符串分割str,会返回分割后的字符串数组
举例:
hive> select split(‘abtcdtef’,'t’) from dual;
["ab","cd","ef"]

集合查找函数: find_in_set
语法: find_in_set(string str, string strList) 
返回值: int
说明: 返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串。如果没有找该str字符,则返回0
举例:
hive> select find_in_set(‘ab’,'ef,ab,de’) from dual;
2
hive> select find_in_set(‘at’,'ef,ab,de’) from dual;
0

hive函数篇一的更多相关文章

  1. hive函数参考手册

    hive函数参考手册 原文见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 1.内置运算符1.1关系运算符 运 ...

  2. PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载   中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...

  3. Python函数篇(5)-装饰器及实例讲解

    1.装饰器的概念   装饰器本质上就是一个函数,主要是为其他的函数添加附加的功能,装饰器的原则有以下两个: 装饰器不能修改被修饰函数的源代码 装饰器不能修改被修改函数的调用方式   装饰器可以简单的理 ...

  4. Python函数篇(7)-正则表达式

    1.正则表达式   正则表达式为高级的文本模式匹配,抽取,与/或文本形式的搜索和替换功能提供了基础,简单的来说,正则表达式是由一些字符和特殊符号组成的字符串.Python通过标准库中的re模块来支持正 ...

  5. Hive函数以及自定义函数讲解(UDF)

    Hive函数介绍HQL内嵌函数只有195个函数(包括操作符,使用命令show functions查看),基本能够胜任基本的hive开发,但是当有较为复杂的需求的时候,可能需要进行定制的HQL函数开发. ...

  6. Scala进阶之路-Scala函数篇详解

    Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...

  7. 大数据入门第十一天——hive详解(三)hive函数

    一.hive函数 1.内置运算符与内置函数 函数分类: 查看函数信息: DESC FUNCTION concat; 常用的分析函数之rank() row_number(),参考:https://www ...

  8. Hadoop生态圈-Hive函数

    Hadoop生态圈-Hive函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  9. Hive(四)hive函数与hive shell

    一.hive函数 1.hive内置函数 (1)内容较多,见< Hive 官方文档>            https://cwiki.apache.org/confluence/displ ...

随机推荐

  1. 为何说 JavaScript 开发很疯狂

    [编者按]本文作者为 Sean Fioritto,主要阐述了 JavaScript 开发为何让人有些无从下手的根本原因.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 网络开发乐趣多多!Ja ...

  2. Angular-学习。

     今天刚学了点关于Angular的知识,就迫不及待的想跟大家来分享. 1.angular.extend ( )方法可以把一个或多个对象中的方法和属性扩展到一个目的对象中. <script typ ...

  3. springMVC入门-05

    接着上一讲,介绍如何查询单个数据,此处介绍show()方法的实现.显示单条数据需要使用Users对象中的一个字段作为入参来进行对象查询,将查询出来的数据放在Model中,并且将model中的user对 ...

  4. Flask配置文件和 路由系统

    debug = True开启debug模式 当你的代码在界面增减之后不用刷新界面自动更新 app.logger.error("这是error模式") app.logger.info ...

  5. Hybris阶段总结(2)hybris架构

    年前总结一下这两个星期在SAP实习学到的一些东西 先上图: ​ 从底往上总结,之后会有个小例子来解释一下 1.Persistence layer 就是作为hybris所连接的数据库这一层,其中hybr ...

  6. 铁乐学python_Day42_线程-信号量事件条件

    铁乐学python_Day42_线程-信号量事件条件 线程中的信号量 同进程的一样,Semaphore管理一个内置的计数器, 每当调用acquire()时内置计数器-1:调用release() 时内置 ...

  7. 铁乐学python_day04-作业

    1,写代码,有如下列表,按照要求实现每一个功能 li = ['alex', 'wusir', 'eric', 'rain', 'alex'] 计算列表的长度并输出 print(len(li)) 答:结 ...

  8. MySql报2006error错误的解决方法(数据过大)

    最近迁移项目中发现,转移数据库出现的几个问题,其中之一就是 2006 error,解决过程如下: 首先贴出报错结果 [Msg] Finished - Unsuccessfully 出现这个结果,首先检 ...

  9. TreeMap:是基于红黑树的Map接口的实现

    > TreeMap:是基于红黑树的Map接口的实现. 红黑树:平衡二叉树 取出时,可以有三种方式:前序遍历,中序遍历,后序遍历 >排序: A 自然排序  --TreeMap无参构造 Tre ...

  10. 安全紧急预警-防范新型 Sigrun 勒索病毒

    近日,互联网上出现一种 Sigrun 勒索病毒,其通过垃 圾邮件.网站捆绑软件等方式进行传播.该病毒一旦植入到 用户的服务器,将把系统文件加密为.sigrun 的文件,进而 向受害者勒索虚拟货币.该新 ...