hive函数总结

9、正则表达式解析函数:regexp_extract

语法: regexp_extract(string subject, string pattern, int index)

返回值: string

说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。注意,在有些情况下要使用转义字符

举例:

[sql] view plain copy

  1. hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 1) from dual;
  2. the
  3. hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2) from dual;
  4. bar
  5. hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 0) from dual;
  6. foothebar

10、URL解析函数:parse_url,parse_url_tuple(UDTF)

语法: parse_url(string urlString, string partToExtract [, string keyToExtract]),parse_url_tuple功能类似parse_url(),但它可以同时提取多个部分并返回

返回值: string

说明:返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

举例:

[sql] view plain copy

  1. hive> select parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1′, ‘HOST’) from dual;
  2. facebook.com
  3. hive> select parse_url_tuple(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1‘, ‘QUERY:k1‘, ‘QUERY:k2‘);
  4. v1 v2

11、json解析函数:get_json_object

语法: get_json_object(string json_string, string path)

返回值: string

说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。

举例:

[sql] view plain copy

  1. hive> select  get_json_object(‘{“store”:
  2. >   {“fruit”:\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
  3. >    “bicycle”:{“price”:19.95,”color”:”red”}
  4. >   },
  5. >  “email”:”[email protected]_for_json_udf_test.net”,
  6. >  “owner”:”amy”
  7. > }
  8. > ‘,’$.owner’) from dual;
  9. amy

12、集合查找函数: find_in_set

语法: find_in_set(string str, string strList)

返回值: int

说明: 返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串。如果没有找该str字符,则返回0(只能是逗号分隔,不然返回0)

举例:

[sql] view plain copy

  1. hive> select find_in_set(‘ab’,‘ef,ab,de’) from dual;
  2. 2
  3. hive> select find_in_set(‘at’,‘ef,ab,de’) from dual;
  4. 0

13、行转列:explode (posexplode Available as of Hive 0.13.0)

说明:将输入的一行数组或者map转换成列输出

语法:explode(array (or map))

举例:

[sql] view plain copy

  1. hive> select explode(split(concat_ws(‘,‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘),‘,‘)) from test.dual;
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9

14、多行转换:lateral view

说明:lateral view用于和json_tuple,parse_url_tuple,split, explode等UDTF一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

举例:

[sql] view plain copy

  1. hive> select s.x,sp from test.dual s lateral view explode(split(concat_ws(‘,‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘),‘,‘)) t as sp;
  2. x sp
  3. a 1
  4. b 2
  5. a 3

解释一下,from后面是你的表名,在表名后面加lateral view explode。。。(你的行转列sql) ,还必须要起一个别名,我这个字段的别名为sp。然后再看看select后面的 s.*,就是原表的字段,我这里面只有一个字段,且为X

多个lateral view的sql类如:

[sql] view plain copy

  1. SELECT * FROM exampleTable LATERAL VIEW explode(col1) myTable1 AS myCol1 LATERAL VIEW explode(myCol1) myTable2 AS myCol2;

抽取一行数据转换到新表的多列样例:

http_referer是获取的带参数请求路径,其中非法字符用\做了转义,根据路径解析出地址,查询条件等存入新表中,

[sql] view plain copy

  1. drop table if exists t_ods_tmp_referurl;
  2. create table t_ ods _tmp_referurl as
  3. SELECT a.*,b.*
  4. FROM ods_origin_weblog a LATERAL VIEW parse_url_tuple(regexp_replace(http_referer, "\"", ""), ‘HOST‘, ‘PATH‘,‘QUERY‘, ‘QUERY:id‘) b as host, path, query, query_id;

复制表,并将时间截取到日:

[sql] view plain copy

    1. drop table if exists t_ods_tmp_detail;
    2. create table t_ods_tmp_detail as
    3. select b.*,substring(time_local,0,10) as daystr,
    4. substring(time_local,11) as tmstr,
    5. substring(time_local,5,2) as month,
    6. substring(time_local,8,2) as day,
    7. substring(time_local,11,2) as hour
    8. From t_ ods _tmp_referurl b;
时间: 2024-10-07 03:19:09

hive函数总结的相关文章

Hive函数

1.时间函数 from_unixtime函数  用法为将时间戳转换为时间格式 语法: from_unixtime(bigint unixtime[, string format])   返回值为string 例如  hive>select from_unixtime(1326988805,'yyyyMMddHH') from test; 如果为字段转换的话,则为 select from_unixtime(time,'yyyyMMddHH') from test; 字段time如果为string类

Hive(四)hive函数与hive shell

一.hive函数 1.hive内置函数 (1)内容较多,见< Hive 官方文档>            https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF        (2)详细解释:            http://blog.sina.com.cn/s/blog_83bb57b70101lhmk.html (3) 测试内置函数的快捷方式: 1.创建一个 dual 表 create table dual

hive函数总结-日期函数

获取当前UNIX时间戳函数: unix_timestamp语法: unix_timestamp() 返回值: bigint说明: 获得当前时区的UNIX时间戳举例: hive> select unix_timestamp() from dual; OK 1455616811 Time taken: 0.785 seconds, Fetched: 1 row(s) 日期函数UNIX时间戳转日期函数: from_unixtime 语法:from_unixtime(bigint unixtime[,

hive函数----集合统计函数

集合统计函数1. 个数统计函数: count 语法: count(*), count(expr), count(DISTINCT expr[, expr_.]) 返回值: int 说明: count(*)统计检索出的行的个数,包括NULL值的行:count(expr)返回指定字段的非空值的个数:count(DISTINCTexpr[, expr_.])返回指定字段的不同的非空值的个数 举例: hive> select count(*) from lxw_dual; 20 hive> selec

hive函数 -- split 字符串分割函数

hive字符串分割函数 split(str, regex) - Splits str around occurances that match regexTime taken: 0.769 seconds, Fetched: 1 row(s) 返回值为一个数组 a.基本用法: 例1: split('a,b,c,d',',') 得到的结果: ["a","b","c","d"] b.截取字符串中的某个值: 当然,我们也可以指定取结

Hive函数大全

一.关系运算: 1. 等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为FALSE 举例: hive> select 1 from lxw_dual where 1=1; 1 2. 不等值比较: <> 语法: A <> B 操作类型: 所有基本类型 描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL:如果表达式A与表达式B不相等,则为TRUE:否则为FALSE 举例: hive> select

hive 函数大全

一.关系运算: 1. 等值比较: = 语法:A=B 操作类型:所有基本类型 描述:如果表达式A与表达式B相等,则为TRUE:否则为FALSE 举例: hive>select 1 from lxw_dual where 1=1; 1 2. 不等值比较: <> 语法: A <> B 操作类型:所有基本类型 描述:如果表达式A为NULL,或者表达式B为NULL,返回NULL:如果表达式A与表达式B不相等,则为TRUE:否则为FALSE 举例: hive> select1 fr

[Hive]-函数篇

1.函数分类 2.操作符 A = B(等价A == B)  值相等 A <==> B  Equals(两个同时为Null为真,只有一个Null为假,否则Equals) A <>B(等价A!=B) 不等于(同Null为假,只有一个NUll为真,否则Equals取反) A [NOT] BETWEEN B AND C   [B,C]A是否在B,C之间(包含边界B,C) A IS [NOT]  NULL  A是否为Null A [NOT] LIKE B 同MySQL Like操作符 A R

Hive 函数

1. 内置运算符在Hive有四种类型的运算符:· 关系运算符· 算术运算符· 逻辑运算符· 复杂运算内容较多,见<Hive官方文档>或者<hive常用运算和函数.doc>2. 内置函数https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF测试各种内置函数的快捷方法:创建一个dual表create table dual(id string);load一个文件(只有一行内容:内容为一个空格)到dual表se