1、 Like 和 RLike
(1)使用 LIKE 运算选择类似的值
(2)选择条件可以包含字符或数字:
% 代表零个或多个字符(任意个字符)。
_ 代表一个字符。
(3)RLIKE 子句是 Hive 中这个功能的一个扩展,其可以通过 Java 的正则表达式这个更
强大的语言来指定匹配条件。
2、Hive 支持通常的 SQL JOIN 语句,但是只支持等值连接,不支持非等值连接。
3、满外连接 ( full join)
将会返回所有表中符合 WHERE 语句条件的所有记录。如果任一表的指定 字段没有符合条件的值的话,那么就使用 NULL 值替代。
4、全局排序(Order By)
Order By:全局排序,一个 Reducer ,结果集只会有一个文件
select * from stuinfo3 order by age desc;
按照别名排序
select name,age as age1,gender from stuinfo3 order by age1 desc;
多个列排序
select * from stuinfo3 order by age desc,name;
5、内部排序(Sort By)
具体参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy
每个 Reducer 内部进行排序,对全局结果集来说不是排序。
在没有结合Distribute By使用时,为了避免数据倾斜,默认是随机将数据分发到多个分区里。
mapreduce.job.reduces 默认值是-1,即根据数据量产生具体的个数
设置reduce个数
set mapreduce.job.reduces=3;
查询设置的reduce个数
set mapreduce.job.reduces;
查询出的结果集文件数是3个,每个文件里是有序的
6、 分区排序(Distribute By)
Distribute By:类似 MR 中 partition,进行分区,结合 sort by 使用。
注意,Hive 要求 DISTRIBUTE BY 语句要写在 SORT BY 语句之前。
对于 distribute by 进行测试,一定要分配多 reduce 进行处理,否则无法看到 distribute by
的效果。
select * from stuinfo3 distribute by name sort by age desc;
7、 Cluster By
当 distribute by 和 sorts by 字段相同时,可以使用 cluster by 方式。
cluster by 除了具有 distribute by 的功能外还兼具 sort by 的功能。但是排序只能是升序排
序,不能指定排序规则为 ASC 或者 DESC。