搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
繁依Fanyi0
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
五分钟学会智能多通道推送(PUSH)技术
2
基于SpringBoot+Vue的小区物业管理系统
3
[工具]如何在vscode中构建python工程
4
使用R获取文件_download.file(destfile)
5
python-绘图-echart_python echart
6
Springboot+Redis:实现缓存 减少对数据库的压力
7
MATLAB-使用MATLAB求0-100之间的素数_matlab求素数
8
1 李宏毅生成对抗网络学习———GAN的直观了解_gan李宏毅代码
9
矩阵分析在自然语言处理中的重要性:从词嵌入到情感分析
10
Unity之手游UI的点击和方向移动_unity 手机移动
当前位置:
article
> 正文
3.1面经总结 map reduce流程 shuffle流程 hive执行引擎 order by、group by、having、where_hive中的group by需要shuffle吗
作者:繁依Fanyi0 | 2024-04-10 03:19:41
赞
踩
hive中的group by需要shuffle吗
3.1总结
MapReduce
mapreduce流程
shuffle流程
Hive
Hive中MR(map reduce)、Tez和Spark执行引擎对比
Mysql
order by 和 group by 的区别
having 和where的用法区别
当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:
MapReduce
MapReduce是一种
编程模型
,用于大规模数据集,分为
映射 和 归约
,大数据量下优势明显,
读写HDFS次数多
mapreduce流程
maptask
:
读数据:读取源数据,获取分片数据信息,
形成key-value数据 key是偏移值;<0,hello you> <10,hello me>
逻辑处理:调用map方法读取
每行数据进行处理
;
<hello,1> <you,1> <hello,1> <me,1>
分区:通过Partitioner类的getPartition()方法对
数据进行分区,分区号相同的数据会被分发给同一reducetask
;
排序:
对不同分区中的数据进行排序(按照k)、分组。
排序默认按照字典序列,分组指的是相同key的value放到一个集合中
。排序后:
<hello,1> <hello,1> <me,1> <you,1>
分组后:
<hello,{1,1}><me,{1}><you,{1}>
reducetask:
多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点上
。
处理数据:对多个map的输出进行合并、排序,覆盖reduce函数,接收的是分组后的数据,实现自己的业务逻辑,
<hello,2> <me,1> <you,1>
对reduce输出的<k,v>写到HDFS中
shuffle
流程
map端shuffle
分区partition
,能够把map任务处理的结果**发给指定reduce执行,负载均衡,**避免数据倾斜。
写入环形内存缓冲区
,频繁I/O操作会严重降低效率,每个map任务都会分配一个环形内存缓冲区,用于存储map任务输出的键值对,默认大小
100MB
,
执行溢出写
排序->合并->生成溢出写文件
一旦缓存区内容达到阈值,默认80%
,就锁定着80%的内存,Map task的输出结果还可以往剩下的20MB内存中写,互不影响。并在
每个分区中对其键值对进行sort
,按照paritition和key排序,排序完后会创建一个溢出文件,然后把这部分数据溢出spill写到本地磁盘。如果客户端自定义了
Combiner(相当于map阶段的reduce)
,则会在分区排序后到溢写出前自动调用combiner,
将相同的key的value相加,这样的好处就是减少溢写到磁盘的数据量。这个过程叫“合并”
)
归并merge
,当一个maptask处理数据很大时,对
同一个map任务产生的多个spill文件进行归并生成最终的一个已分区且已排序的大文件
合并(Combine)和归并(Merge)的区别:
两个键值对
<“a”,1>
和
<“a”,1>
,如果合并,会得到
<“a”,2>
,如果归并,会得到
<“a”,<1,1>>
reduce端shuffle
复制copy
,Reduce 任务通过HTTP向各个Map任务拖取它所需要的数据。
归并merge
,Map的输出数据已经是有序的,Merge进行一次合并排序,
所谓Reduce端的 sort过程就是这个合并的过程
。一般Reduce是一边copy一边sort,即
copy和sort两个阶段是重叠而不是完全分开的
。
Hive
hive其实本身并不是一个仓库,而是一个
sql翻译工具
.
把sql翻译成mapreduce语句,hadoop集群去hdfs集群上执行这些mapreduce语句,在执行的过程中去yarn申请资源,
所谓的hive仓库,其实是
顶层的一个hive转换工具+底层的HDFS+YARN资源管理器构成的.
Hive中MR(map
reduce
)、Tez和Spark执行引擎对比
MapReduce是一种
编程模型
,用于大规模数据集,分为
映射 和 归约
,大数据量下优势明显,
读写HDFS次数多
Tez是Apache开源的支持
DAG(有向图)作业
的计算框架,它直接
源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分
,把多个MR任务组合成一个较大的DAG任务,减少文件存储并可以
优化子过程
Spark基于map reduce算法实现的
分布式计算
,
Job中间输出和结果可以保存在内存中,不需要读写HDFS,以DAG方式处理数据
,数据量比较大的时候比较吃内存
Spark和Tez的区别:
Spark与Tez都是以
DAG
方式处理数据
Spark更像是一个
通用的计算引擎
,可以同时作为
批式和流式
的处理引擎,提供内存计算,实时流处理,机器学习等多种计算方式,适合迭代计算。tez作为
一个框架工具
,
特定为hive
和pig提供批量计算
Spark属于
内存计算,支持多种运行模式,可以跑在standalone,yarn上
;而Tez只能跑在
yarn上
;
Tez
能够及时的释放资源
,重用container,节省调度时间,对内存的资源要求率不高; 而spark如果存在迭代计算时,container
一直占用资源
;
使用场景:
如果数据需要快速处理而且资源充足,则可以选择Spark;如果资源是瓶颈,则可以使用Tez;
Mysql
使用count(列名)当某列出现null值的时候,count(*)仍然会计算,但是count(列名)不会。
order by 和 group by 的区别
order by 就是行的
排序方式,默认的为升序
。 order by 后面必须列出排序的字段名,可以是多个字段名。
group by是
分组
。必须有“
聚合函数
”来配合才能使用,使用时至少
需要一个分组标志字段
。注意:聚合函数是—sum()、count()、avg()等都是“聚合函数”,
在group by 中用count(*) 获取条数 ,获取的不是总条数,而是每个组的条数
,count(*)的结果是分组以后每组中的记录的条数,而不是分组的数目,
where后面不能接聚合函数
,
聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行
,那么只能用另外一种方法:
havaing
。having就是专门为了应付这种情况而发明出来的
having 和where的用法区别
having只能用在group by之后,
对分组后的结果
进行筛选(即使用having的前提条件是分组)
where
肯定在group by 之前。
where后的条件表达式里不允许使用聚合函数,而having可以。
当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:
先连接from后的数据源(若有join,则先执行on后条件,再连接数据源)。
执行where xx对全表数据做筛选,返回第1个结果集。
针对第1个结果集使用group by分组,返回第2个结果集。
针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。
针对第3个结集执行having xx进行筛选,返回第4个结果集。
针对第4个结果集排序。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/396333
推荐阅读
article
Canal
-
adapt
部署遇到的小坑-
java
.
lang
.IllegalArgumentExcept...
背景: 使用
canal
+ kafka +
canal
-
adapt
。 将 源数据库mysql0 实时同步到 目的数据库m...
赞
踩
article
奇怪的问题,再次启动jar包会导致
bean
对象失效?Unknown
red
is
exception ...
大家好,我是烤鸭:_cannot
connect
, event
executor
group
is
terminated
...
赞
踩
article
Group
Normalization
_
tensorflow
中groupnorm...
FAIR 团队,吴育昕和恺明大大的新作
Group
Normalization
。主要的优势在于,BN会受到batchsiz...
赞
踩
article
MySQL
查询
为什么
没
走
索引
?这篇文章带你全面解析_t
id
b
group
by主键
id
,为啥
没
有
走索...
工作中,经常遇到这样的问题,我明明在
MySQL
表上面加了
索引
,为什么执行SQL
查询
的时候却
没
有
用到
索引
?同一条SQL有时...
赞
踩
article
my
sql
数据
分组
group
by 多条件
分组
但条件不并列的分析_
sql
group
之后不合并...
背景是这样的,我有一个表是以毫秒级维度存储的
数据
,但是实际需求需要先以秒级维度做一个聚合
分组
查询,然后对于查询出来的
数据
...
赞
踩
article
云账户自动提现封装(
支付宝
加银行卡)_云账户对接/
api
/
payment
/v1/
order
-real...
目录1、
支付宝
自动提现代码2、银行卡自动提现代码1、
支付宝
自动提现代码[详细]
-->
赞
踩
article
vue2
el
-
checkbox
-
group
不能勾选问题...
【代码】
vue2
el
-
checkbox
-
group
不能勾选问题。_
el
-
checkbox
-
group
不能勾选
el
-...
赞
踩
article
mysql
遇见
Expression
#1 of
SELECT
list is not
in
GROU...
问题出现的原因:MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_
GROUP
_BY SQL模式...
赞
踩
article
LeetCode-Binary
Tree
Level
Order
Traversal II-搞定指向...
对于这个题目,其实就是二叉树
的
按层遍历,然后将按层遍历
的
结果倒序存放而已,正好复习一下二叉树
的
按层遍历。void Bi...
赞
踩
article
Hive
数仓工具(3) 插入加载导入
导出
数据
分区
表
操作
表
的修改操作 查询 对
null
处理 基...
编程 -->
数据
+ 运算(JAVA SQL)
hive
:
数据
查看工具,不是
数据
库 服务(HQL -->MR)核心组件
数据
...
赞
踩
article
牛客题霸
sql
入门篇之高级查询_
select
gpa
from
user
_
profile
order...
牛客题霸
sql
入门篇之高级查询_
select
gpa
from
user
_
profile
order by
gpa
de...
赞
踩
相关标签
数据库
kafka
同步
java
redis
大数据
mysql
javascript
前端
vue.js
hive
分区表
牛客题霸
sql入门
高级查询