导语:HiveSQL各关键字详解,hive函数大全,类似于个人记录工具书,后续遇到其他的也会继续加进来。
有关hive库表操作请见上篇:漫谈大数据 - HiveSQL总结(一)库表操作_昊昊该干饭了的博客-CSDN博客针对hive各种数据库操作,内部表、外部表、分区表、分桶表的表属性查看修改操作以及hive数据的导入与导出详解。https://blog.csdn.net/qq_52213943/article/details/130287680?spm=1001.2014.3001.5501
hive简介:
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MR任务来执行。
目录
Hive查询语法
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list [HAVING condition]]
[CLUSTER BY col_list
| [DISTRIBUTE BY col_list] [SORT BY| ORDER BY col_list]
]
[LIMIT number]
WHERE 条件筛选
select * from score where score < 60;
GROUP BY 分组
select s_id ,avg(s_score)
from score
group by s_id;
分组后对数据进行筛选,使用having
select s_id ,avg(s_score) as avgscore
from score
group by s_id
having avgscore > 85;
join 连接
INNER JOIN 内连接:只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留下来
select * from techer t [inner] join course c on t.t_id = c.t_id; -- inner 可省略
LEFT OUTER JOIN 左外连接:左边所有数据会被返回,右边符合条件的被返回
select * from techer t left join course c on t.t_id = c.t_id; -- outer可省略
RIGHT OUTER JOIN 右外连接:右边所有数据会被返回,左边符合条件的被返回、
select * from techer t right join course c on t.t_id = c.t_id;
FULL OUTER JOIN 满外(全外)连接: 将会返回所有表中符合条件的所有记录。如果任一表的指定字段没有符合条件的值的话,那么就使用NULL值替代。
SELECT * FROM techer t FULL JOIN course c ON t.t_id = c.t_id ;
order by 排序
SELECT * FROM student s
LEFT JOIN score sco
ON s.s_id = sco.s_id
ORDER BY sco.s_score DESC;
sort by 局部排序
设置reduce个数
set mapreduce.job.reduces=3;
查看设置reduce个数
set mapreduce.job.reduces;
查询成绩按照成绩降序排列
select * from score sort by s_score;
将查询结果导入到文件中(按照成绩降序排列)
insert overwrite local directory '/export/servers/hivedatas/sort' select * from score sort by s_score;
distribute by 分区排序
设置reduce的个数,将我们对应的s_id划分到对应的reduce当中去
set mapreduce.job.reduces=7;
通过distribute by 进行数据的分区
select * from score distribute by s_id sort by s_score;
cluster by
以下两种写法等价
select * from score cluster by s_id;
select * from score distribute by s_id sort by s_id;
Hive常用函数
聚合函数
聚合操作时要注意null值
count(*) 包含null值,统计所有行数
count(id) 不包含null值
min 求最小值是不包含null,除非所有值都是null
avg 求平均值也是不包含null
关系运算
REGEXP操作
语法: A REGEXP B
操作类型: strings
描述: 功能与RLIKE相同
示例:select 1 from tableName where 'footbar' REGEXP '^f.*r$';
结果:1
数学运算
逻辑运算
数值运算
条件函数
日期函数
字符串函数
窗口函数
复杂数据类型操作
Map类型构建
语法: map (key1, value1, key2, value2, …)
说明:根据输入的key和value对构建map类型
Map类型访问
语法: M[key]
操作类型: M为map类型,key为map中的key值
说明:返回map类型M中,key值为指定值的value值。
比如,M是值为{'f' -> 'foo', 'b' -> 'bar', 'all' -> 'foobar'}的map类型,那么M['all']将会返回'foobar'
Map类型长度
语法: size(Map<k .V>)
返回值: int
说明: 返回map类型的长度
Struct类型构建
语法: struct(val1, val2, val3, …)
说明:根据输入的参数构建结构体struct类型
Struct类型访问
语法: S.x
操作类型: S为struct类型
说明:返回结构体S中的x字段。
比如,对于结构体struct foobar {int foo, int bar},foobar.foo返回结构体中的foo字段
Array类型构建
语法: array(val1, val2, …)
说明:根据输入的参数构建数组array类型
Array类型访问
语法: A[n]
操作类型: A为array类型,n为int类型
说明:返回数组A中的第n个变量值。数组的起始下标为0。
比如,A是个值为['foo', 'bar']的数组类型,那么A[0]将返回'foo',而A[1]将返回'bar'
Array类型长度
语法: size(Array<T>)
返回值: int
说明: 返回array类型的长度
类型转换函数
-- 将字符串类型1 转为数字1
select cast('1' as int) from tableName;
欢迎点赞收藏评论交流~
转载请标明出处