目录

  • 1.前言
  • 2.order by
  • 3.sort by
  • 4.distribute by
  • 5.Cluster By
  • 6.实际需求

1.前言

hive中的四个by分别为order by,sort by,distribute by,cluster by;
下面具体讲解:

2.order by

全局排序,只有一个reduce;
缺点:当数据量非常大时,耗时太长,效率低下,适用于数据量较小的场景;
优点:数据全局排序;

select * from emp order by sal desc;

备注:当你使用order by时,默认只走一个reduce,和你设多少个reduce个数无关;

3.sort by

对每一个reducer内部的数据进行排序,全局结果集来说不是排序的,即只能保证每一个reduce输出的文件中的数据是按照规定的字段进行排序的;适用于数据量较大,但对排序要求不严格的场合,可以大幅度提升执行效率;

set mapreduce.job.reduces=3
set mapreduce.job.reduces;
select * from emp sort by deptno desc;

备注:需要你预先设置reduce个数,结果各个reduce文件内部有序,全局无序;

4.distribute by

控制特定的key到指定的reducer,方便后续的聚集操作,类似MR中partition(自定义分区),一般结合sort by使用;
这边需要设置reduces的数量为分区的数量,否则不会启动相应的reducer去进行任务的执行,这最终会导致不能完全分区;

hive (default)> set mapreduce.job.reduces=3;
hive (default)> select * from emp distribute by deptno sort by empno desc;

注意:
1. distribute by的分区规则是根据分区字段的hash码与reduce的个数进行模除后,余数相同的分到一个区。
2. Hive要求distribute by语句要写在sort by语句之前;

5.Cluster By

当distribute by和sorts by字段相同时,可以使用cluster by方式。
cluster by除了具有distribute by的功能外还兼具sort by的功能。但是排序只能是升序排序,不能指定排序规则为ASC或者DESC。
1)以下两种写法等价

hive (default)> select * from emp cluster by deptno;
hive (default)> select * from emp distribute by deptno sort by deptno;

补充:分桶表
对于一张表或者分区,Hive 可以进一步组织成桶,也就是更为细粒度的数据范围划分;

create table stu_buck(id int, name string)
clustered by(id)
into 4 buckets
row format delimited fields terminated by '\t';

6.实际需求

现在有一亿条数据,比如people_info,取出财富最高的前100位;
分析:显然需要排序,首先想到用order by ,可是显然不行,order by 效率太低,耗时太长;现在思考能不能先走多个reduce,区内有序,最后再全局排序;
具体实现:

select
*
from
(select
id,
name,
money
from  peopel _info
distribute by loc sort by money limit 100) tmp
order by money limit 100;

备注:这里loc字段是peopel _info 里面自身就有的,如果没有你需要自己添加类似字段,比如level(按money 大小分level,可以用case when 函数,最终可以distribute by level sort by money ),这里方便记忆可以简单这么记,先distribute by sort by ,最后再order by ;

大数据之Hive:hive中的四个by相关推荐

  1. 大数据基础之Hive(四)—— 常用函数和压缩存储

    作者:duktig 博客:https://duktig.cn (文章首发) 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 更多文章参看github知识库:https://github.com/dukt ...

  2. 大数据面试之hive重点(二)

    大数据面试之hive重点(二) Hive SQL转化为MR的过程? 可回答:1)Hive SQL的解析过程:2)Hive SQL的底层实现 问过的一些公司:阿里,头条,小米,滴滴,美团x2,网易,快手 ...

  3. 大数据面试之Hive常见题目

    大数据面试之Hive常见题目 1. Hive的架构 1.重点四个器:解释器(SQL Parser).Driver:编译器(Compiler),优化器(Optimizer),执行器(Executor) ...

  4. Cris 小哥哥的大数据项目之 Hive 统计 YouTube 热门视频

    Cris 小哥哥的大数据项目之 Hive 统计 YouTube 热门视频 Author:Cris 文章目录 Cris 小哥哥的大数据项目之 Hive 统计 YouTube 热门视频 Author:Cr ...

  5. 大数据知识面试题-Hive (2022版)

    序列号 内容 链接 1 大数据知识面试题-通用(2022版) https://blog.csdn.net/qq_43061290/article/details/124819089 2 大数据知识面试 ...

  6. hive使用适用场景_大数据入门:Hive应用场景

    在大数据的发展当中,大数据技术生态的组件,也在不断地拓展开来,而其中的Hive组件,作为Hadoop的数据仓库工具,可以实现对Hadoop集群当中的大规模数据进行相应的数据处理.今天我们的大数据入门分 ...

  7. B06 - 999、大数据组件学习③ - Hive

    初学耗时:999h 注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端. 『   因为要去见那个不一般的人,所以我就不能是一般人.』  B99.要学就学大数据 - B系列总纲   ...

  8. 大数据技术原理与应用作业四

    大数据技术原理与应用作业四 1. 试述在Hadoop体系架构中HBase与其他组成部分的相互关系. HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算: 利用Z ...

  9. 2018.11:大数据在政府统计中的应用、瓶颈及融合路径(余芳东)

    内容摘要:应用大数据是未来政府统计发展的必然趋势.本文系统梳理当前政府统计应用大数据的基本类型,研究探索大数据统计应用实践和基本方法思路,剖析大数据统计应用面临的困难和瓶颈,提出推进大数据与政府统计工 ...

  10. 基于ISM的大数据在建筑领域中的应用障碍分析

    点击上方蓝字关注我们 基于ISM的大数据在建筑领域中的应用障碍分析 纪颖波1, 赵子豪1, 姚福义2 1 北方工业大学土木工程学院,北京 100144 2 重庆大学管理科学与房地产学院,重庆 4000 ...

最新文章

  1. python ~ not 的区别 :前者按位取反,后者是逻辑‘与或非’的‘非’
  2. linux c 之sigsuspend 进程阻塞
  3. python和c哪个好学-C/C++和Python哪个更有前景?
  4. 怎么用计算机算亩数,怎样用手机测量亩数?
  5. wpf控件设计时支持(3)
  6. Firefox开发者工具里查看HTML元素的Box模型
  7. 【C语言】指向一维数组元素的指针
  8. 郑州大学校园网使用指南
  9. 使用httpclient下载 页面、图片
  10. linux上的ds命令,使用DS-5 进行Linux应用开发
  11. SpringBoot PageOffice 在线编辑 (完整版、有源码)
  12. STC15单片机-LED闪烁(定时器)
  13. 安装包的原理与制作安装包的流程
  14. Python、Cython、CPython的简单对比
  15. 解决华擎J3455主板DSM兼容性问题
  16. (PPT抠图)设置透明色/删除背景
  17. CGT Asia 2022第二届亚洲细胞与基因治疗创新峰会将于2022年7月10日-111日在上海举办
  18. easyx创建窗口及原理
  19. 大数据平台安装部署(适用虚拟机级真实服务器,亲测)
  20. 灰色模型相关---理论基础

热门文章

  1. 实践成功笔记:SumatraPDF-search
  2. Python:第(前)K大(小)数问题
  3. 使用zuma免费建站后应如何维护网站?
  4. AcWing每日一题
  5. 《时生》优秀读后感范文4000字
  6. 在linux的shell中/bin/true是什么意思?
  7. 管理上的心得分享(一)
  8. Couldn't find include 'Atk-1.0.gir'
  9. 报错previous declaration invalid use of incomplete type
  10. qt linux qm,QM 文件扩展名: 它是什么以及如何打开它?