Spark处理数据比Hive快的原因

12 篇文章 0 订阅
11 篇文章 0 订阅

Spark SQL比Hadoop Hive快,是有一定条件的,而且不是Spark SQL的引擎比Hive的引擎快,相反,Hive的HQL引擎还比Spark SQL的引擎更快。
其实,关键还是在于Spark 本身快。那么Spark为什么快呢?

  1. 消除了冗余的HDFS读写
    Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,很多的shufle操作,那么Hadoop的读写IO时间会大大增加。、

  2. 消除了冗余的MapReduce阶段
    Hadoop的shuffle操作一定连着完整的MapReduce操作,冗余繁琐。而Spark基于RDD提供了丰富的算子操作,且action操作产生shuffle数据,可以缓存在内存中。

  3. JVM的优化
    Hadoop每次MapReduce操作,启动一个Task便会启动一次JVM,基于进程的操作。而Spark每次MapReduce操作是基于线程的,只在启动Executor时启动一次JVM,内存的Task操作是在线程复用的。
    每次启动JVM的时间可能就需要几秒甚至十几秒,那么当Task多了,这个时间Hadoop不知道比Spark慢了多少。
    总结:Spark比Mapreduce运行更快,主要得益于其对mapreduce操作的优化以及对JVM使用的优化。

问题扩展

Spark快不是绝对的,但是绝大多数Spark都比Hadoop计算要快。
考虑一种极端查询:Select month_id,sum(sales) from T group by month_id;这个查询只有一次shuffle操作,此时,也许Hive HQL的运行时间也许比Spark还快。


来自:https://book.itheima.net/study/1269935677353533441/1270196659166420993

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值