博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hive四种排序order by,sort by,distribute by,cluster by的区别
阅读量:2429 次
发布时间:2019-05-10

本文共 2046 字,大约阅读时间需要 6 分钟。

1.数据准备

创建person表

CREATE TABLE `person`(  `id` int,   `name` string,   `address` string)

添加如下数据:

hive> insert into person values(1, 'lisi', 'beijing');hive> insert into person values(2, 'zhangsan', 'chengdu');hive> insert into person values(3, 'wangwu', 'shanghai');hive> insert into person values(4, 'zhaoliu', 'guangzhou');hive> insert into person values(5, 'name5', 'beijing');
2.order by

order by会对查询结果执行一个全局排序,reducer的数量是1。因此这个过程可能会很漫长。

hive> select * from person  order by  id desc;5       name5   beijing4       zhaoliu guangzhou3       wangwu  shanghai2       zhangsan        chengdu1       lisi    beijing
3.sort by

sort by 只会对每个reducer 中的数据进行排序,也就是执行一个局部排序过程。

hive> set mapreduce.job.reduces=3;hive> insert overwrite local directory '/root/sortby-result' select * from person sort by id desc;
# 每个分区的数据按id降序[root@master ~]# cat /root/sortby-result/000000_0 5name5beijing[root@master ~]# cat /root/sortby-result/000001_0 4zhaoliuguangzhou3wangwushanghai2zhangsanchengdu[root@master ~]# cat /root/sortby-result/000002_0 1lisibeijing
4.distribute by

distribute by 控制mapper中的输出在 reducer 中是如何进行划分的,使用distribute by可以保证相同key的记录被划分到一个reducer中。

# 以address分区然后再按id排序hive> set mapreduce.job.reduces=3;hive> insert overwrite local directory '/root/distributeby-result' select * from person distribute by address  sort by id desc;
[root@master ~]# cat /root/distributeby-result/000000_0 4zhaoliuguangzhou3wangwushanghai[root@master ~]# cat /root/distributeby-result/000001_0 5name5beijing1lisibeijing[root@master ~]# cat /root/distributeby-result/000002_0 2zhangsanchengdu
5.cluster by

distribute by 和 sort by 合用就相当于cluster by,但是cluster by 不能指定排序为asc或 desc 的规则,只能是升序排列。

hive> set mapreduce.job.reduces=3;hive> insert overwrite local directory '/root/clusterby-result' select * from person cluster by address;
[root@master ~]# cat /root/distributeby-result/000000_0 4zhaoliuguangzhou3wangwushanghai[root@master ~]# cat /root/distributeby-result/000001_0 5name5beijing1lisibeijing[root@master ~]# cat /root/distributeby-result/000002_0 2zhangsanchengdu

转载地址:http://tecmb.baihongyu.com/

你可能感兴趣的文章
程序员是如何运用增长思维找到女朋友?
查看>>
@程序员,离职让企业损失近900亿,还遭疯抢!他凭什么?
查看>>
如何用 Python 一键查房价?
查看>>
累死累活干不过写 PPT 的?新东方年会吐槽视频俞敏洪不罚反奖 12 万!
查看>>
“离开360时,它只给了我一块钱”
查看>>
PDF 翻译神器,再也不担心读不懂英文 Paper 了
查看>>
漫话:如何给女朋友解释什么是RPC
查看>>
@程序员,为什么别人比你优秀?!
查看>>
你的红包狂欢夜,互联网巨头们的流量争夺战
查看>>
春晚过去 4 天了,你卸载百度 APP 了吗?
查看>>
中国移动互联网十年
查看>>
面试官问:请拿出一段体现你水平的代码,我该如何回答?
查看>>
@程序员,沟通这项核心技能你掌握了多少?
查看>>
2019,九问联想贺志强
查看>>
你可以忍受大城市 365 天的孤独,却不能忍受小城市 7 天的热闹
查看>>
35 岁程序员,年后第一天被辞退
查看>>
情人节她说:是的,嫁人当嫁程序员
查看>>
骚操作!代码写情诗 | 程序员有话说
查看>>
小程序卡卡卡?用这个方法后,渲染速度提升三倍!
查看>>
二线城市容不下程序员
查看>>