IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> order by sort by distribute by cluster by 区别 -> 正文阅读

[大数据]order by sort by distribute by cluster by 区别

四种在hive中都有排序和聚集的作用,但它们在执行时所启动的MR却各不相同。

1、order by

Order By:全局排序,只有一个 Reducer。
排序:
ASC(ascend): 升序(默认)
DESC(descend): 降序

按照薪资水平对员工升序排列:

hive (default)> select ename,sal from emp order by sal;
ename	sal
SMITH	800.0
JAMES	950.0
ADAMS	1100.0
MARTIN	1250.0
WARD	1250.0
MILLER	1300.0
MILLER	1300.0
TURNER	1500.0
ALLEN	1600.0
CLARK	2450.0
BLAKE	2850.0
JONES	2975.0

2、sort by

Sort By:对于大规模的数据集 order by 的效率非常低。在很多情况下,并不需要全局排序,此时可以使用 sort by。

Sort by 为每个 reducer 产生一个排序文件。每个 Reducer 内部进行排序,对全局结果集来说不是排序。

根据部门编号降序查看员工信息:

--设置 reduce
hive (default)> set mapreduce.job.reduces=3;
--查看设置 reduce个数
hive (default)> set mapreduce.job.reduces;

hive (default)> select ename, deptno  from emp sort by deptno desc;

ename	deptno
MILLER	50
TURNER	30
MARTIN	30
BLAKE	30
SCOTT	20
KING	10
CLARK	10
JAMES	30
WARD	30
ALLEN	30
ADAMS	20
JONES	20
MILLER	10
FORD	20
SMITH	20

三个reducer示意如下:

3、distribute by

Distribute By: 在有些情况下,我们需要控制某个特定行应该到哪个 reducer,通常是为了进行后续的聚集操作。distribute by 子句可以做这件事。distribute by 类似 MR 中 partition(自定义分区),进行分区,结合 sort by 使用。

对于 distribute by 进行测试,一定要分配多 reduce 进行处理,否则无法看到 distribute by 的效果。

先按照部门编号分区,再按照员工编号降序排序:

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

ename	deptno	empno
MILLER	10	7934
FORD	20	7902
JAMES	30	7900
ADAMS	20	7876
TURNER	30	7844
KING	10	7839
SCOTT	20	7788
CLARK	10	7782
BLAKE	30	7698
MARTIN	30	7654
JONES	20	7566
WARD	30	7521
ALLEN	30	7499
MILLER	50	7434
SMITH	20	7369

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

如下图所示,上述结果按照模为0(20%4 =0)和模为2(10%4=2、30%4=2、50%4=2)两个分区,此外有空的分区(模为1和模为3的)。

4、cluster by

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

以下两种写法等价:

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

其他参考:谈谈hive的order by ,sort by ,distribute by 和 cluster by

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 11:55:47  更:2021-08-27 11:57:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:54:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码