Hive学习笔记——函数
1.cast函数
数据类型转换函数
比如date的值为
2.explode函数
explode() 函数接收一个 array 或 map 作为输入,然后将 array 或 map 里面的元素按照每行的形式输出。其可以配合 LATERAL VIEW 一起使用
参考:Hive应用:explode和lateral view
3.lateral view
lateral view用于和split、explode等UDTF一起使用的,能将一行数据拆分成多行数据,在此基础上可以对拆分的数据进行聚合,lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一行或者多行,lateral view在把结果组合,产生一个支持别名表的虚拟表。
4.json_tuple
5.json UDF
1.brickhouse.udf.json.ToJsonUDF,将hive表转换成json
add jar /path/brickhouse-0.7.0-SNAPSHOT.jar; CREATE TEMPORARY FUNCTION to_json AS 'brickhouse.udf.json.ToJsonUDF'; select to_json(named_struct( 'name', a.col_1, 'children' , array(named_struct('name', b.col_2, 'logins', b.col_3)))) from table_a a join table_b b on a.col_1 = b.col_1; {"name":"userLogins","children":[{"name":"Site B","logins":20}]} {"name":"userLogins","children":[{"name":"Site A","logins":10}]}
参考
https://stackoverflow.com/questions/25188734/converting-data-from-multiple-hive-tables-to-complex-json
2.brickhouse.udf.json.JsonMapUDF,将json的map转换成hive的map
add jar /path/brickhouse-0.7.0-SNAPSHOT.jar; CREATE TEMPORARY FUNCTION json_map AS 'brickhouse.udf.json.JsonMapUDF';
3.brickhouse.udf.json.JsonSplitUDF,将json的value切分成hive的array,比如 {"a":null,"b":"40573"} => [null,"40573"]
add jar /path/brickhouse-0.7.0-SNAPSHOT.jar; CREATE TEMPORARY FUNCTION json_split AS 'brickhouse.udf.json.JsonSplitUDF';
6.开窗函数
ROW_NUMBER() OVER 顺序排序。
RANK() OVER 跳跃排序,如果有两个第一级别时,接下来是第三级别。
DENSE_RANK() OVER 连续排序,如果有两个第一级别时,接下来是第二级别。
比如:在每个departmentId下按salary从高到低排序的dense rank(如果有并列第一名,接下来还是第二名)
select name as Employee,salary as Salary,departmentId,DENSE_RANK() over(partition by departmentId order by salary desc) as rk from Employee
leetcode例子:185. 部门工资前三高的所有员工
本文只发表于博客园和tonglin0325的博客,作者:tonglin0325,转载请注明原文链接:https://www.cnblogs.com/tonglin0325/p/5514249.html