1. Hive简介
hive的定位是数据仓库,其提供了通过 sql 读写和管理分布式存储中的大规模的数据,即 hive即负责数据的存储和管理(其实依赖的是底层的hdfs文件系统或s3等对象存储系统),也负责通过 sql来处理和分析数据。所以说,hive只用来处理结构化数据,且只提供了sql的方式来进行分析处理。而且一般来说,hive只能对数据进行批处理。(当使用hive 的hbase映射表时,有一定的实时能力;同时,flink社区也在尝试将hive实时化-这里的实时化指小时级别的实时化,达不到分钟级别)。

hive的默认引擎是MR,但是在实际开发过程中,MR的执行效率太低,不能满足开发需求,一般都需要对Hive的引擎进行更换。
常用的Hive引擎包括:MR(默认)、Tez、Spark

Tez是一个Hive的运行引擎,性能优于MR。
使用MR引擎:用Hive直接编写MR程序,假设有四个有依赖关系的MR作业,MR之间不能相互使用数据,MR的运行结束后需要将中间结果持久化写到HDFS,其他的MR程序再将需要的依赖从HDFS中读取出来。因此使用MR引擎执行程序时需要多次磁盘io,所以效率不高。

使用Tez引擎:Tez可以将多个有依赖的作业转换为一个作业,这样只需写一次HDFS,且中间节点较少,从而大大提升作业的计算性能。

2、Spark简介
spark是一个通用的处理大规模数据的分析引擎,即 spark 是一个计算引擎,而不是存储引擎,其本身并不负责数据存储。其分析处理数据的方式,可以使用sql,也可以使用java,scala, python甚至R等api;其分析处理数据的模式,既可以是批处理,也可以是流处理;而其分析处理的数据,可以通过插件的形式对接很多数据源,既可以是结构化的数据,也可以是半结构化甚至分结构化的数据,包括关系型数据库RDBMS,各种nosql数据库如hbase, mongodb, es等,也包括文件系统hdfs,对象存储oss, s3 等等
3、两者之间的关系
spark和hive本质上是没有关系的,两者可以互不依赖。但是在企业实际应用中,经常把二者结合起来使用。而业界spark和hive结合使用的方式,主要有以下种:
hive on spark。在这种模式下,数据是以table的形式存储在hive中的,用户处理和分析数据,使用的是hive语法规范的 hql (hive sql)。 但这些hql,在用户提交执行时(一般是提交给hiveserver2服务去执行),底层会经过hive的解析优化编译,最后以spark作业的形式来运行。事实上,hive早期只支持一种底层计算引擎,即mapreduce,后期在spark 因其快速高效占领大量市场后,hive社区才主动拥抱spark,通过改造自身代码,支持了spark作为其底层计算引擎。目前hive支持了三种底层计算引擎,即mr, tez和spark.用户可以通过set hive.execution.engine=mr/tez/spark来指定具体使用哪个底层计算引擎。
spark on hive。spark本身只负责数据计算处理,并不负责数据存储。其计算处理的数据源,可以以插件的形式支持很多种数据源,这其中自然也包括hive。当我们使用spark来处理分析存储在hive中的数据时,这种模式就称为为 spark on hive。这种模式下,用户可以使用spark的 java/scala/pyhon/r 等api,也可以使用spark语法规范的sql ,甚至也可以使用hive 语法规范的hql 。而之所以也能使用hql,是因为 spark 在推广面世之初,就主动拥抱了hive,通过改造自身代码提供了原生对hql包括hive udf的支持(其实从技术细节来将,这里把hql语句解析为抽象语法书ast,使用的是hive的语法解析器,但后续进一步的优化和代码生成,使用的都是spark sql 的catalyst),这也是市场推广策略的一种吧。
spark + spark hive catalog。这是spark和hive结合的一种新形势,随着数据湖相关技术的进一步发展,这种模式现在在市场上受到了越来越多用户的青睐。其本质是,数据以orc/parquet/delta lake等格式存储在分布式文件系统如hdfs或对象存储系统如s3中,然后通过使用spark计算引擎提供的scala/java/python等api或spark 语法规范的sql来进行处理。由于在处理分析时针对的对象是table, 而table的底层对应的才是hdfs/s3上的文件/对象,所以我们需要维护这种table到文件/对象的映射关系,而spark自身就提供了 spark hive catalog来维护这种table到文件/对象的映射关系。

Hive和Spark相关推荐

  1. SparkSQL Spark on Hive Hive on Spark

    刚开始接触Spark被Hive在Spark中的作用搞得云里雾里,这里简要介绍下,备忘. 参考:https://blog.csdn.net/zuochang_liu/article/details/82 ...

  2. 调一调Hive on Spark参数,毫不夸张的说,使其性能达到最大化!

    前言 Hive on Spark是指使用Spark替代传统MapReduce作为Hive的执行引擎,在HIVE-7292提出.Hive on Spark的效率比on MR要高不少,但是也需要合理调整参 ...

  3. spark sql合并小文件_如何比较Hive,Spark,Impala和Presto?

    Spark,Hive,Impala和Presto是基于SQL的引擎,Impala由Cloudera开发和交付.在选择这些数据库来管理数据库时,许多Hadoop用户会感到困惑.Presto是一个开放源代 ...

  4. hive集成spark和mysql

    参考:http://ihoge.cn/2018/HiveSpark.html 一.Hive安装 1.Hive简介 ​ Hive是Facebook开发的构建于Hadoop集群之上的数据仓库应用,可以将结 ...

  5. Hive记录-Hive on Spark环境部署

    1.hive执行引擎 Hive默认使用MapReduce作为执行引擎,即Hive on mr.实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on ...

  6. Hive on Spark和Spark sql on Hive,你能分的清楚么

    摘要:结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序. 本文分享自华为云社区<Hive on Spark和Spark sql o ...

  7. Hive on Spark与SparkSql的区别

    Hive on Spark与SparkSql的区别 hive on spark大体与SparkSQL结构类似,只是SQL引擎不同,但是计算引擎都是spark! 核心代码 #初始化Spark SQL # ...

  8. 关于hive on spark的distribute by和group by使用以及小文件合并问题

    欢迎关注交流微信公众号:小满锅 问题导言 最近在使用hive时,发现一些任务的因为使用mapreduce的缘故,跑的太慢了,才几十个G的数据就经常跑一个多小时,于是有了切换spark的想法. 但是刚刚 ...

  9. Spark on Hive Hive on Spark傻傻分不清?

    Spark on Hive? Hive on Spark傻傻分不清? 1 spark on hive Spark on hive,是spark计算引擎依托hive data source,spark ...

  10. Hive On Spark

    之前数据仓库使用的是hive新版本2.3.0,  hive以MapReduce程序跑在yarn集群上. hive shell常提示: Hive-on-MR is deprecated in Hive ...

最新文章

  1. java增删改查实例源码_Spring Data JPA 实现简单的CRUD增删改查源码案例
  2. Sharepoint摸索之路
  3. 迪普科技以近50%份额全面中标国家电网2016信息化硬件采购
  4. LeetCode 255. 验证前序遍历序列二叉搜索树(单调栈)*
  5. 面试问题大全(不断添加中)
  6. 曾经很火的迅雷,为什么现在不怎么火了?
  7. matlab求解方程2x的5次,5元二次方程求解
  8. 利用拉普拉斯滤波器提取图像边缘,实现图像锐化
  9. 手机怎么安装py thon_Python调试器– Py​​thon pdb
  10. 1.1 linux介绍
  11. Python3优雅操作-时间处理与定时任务
  12. JAVA计算机毕业设计钢材商贸公司网络购销管理系统Mybatis+系统+数据库+调试部署
  13. 什么是芯片加速器 Accelerator
  14. DIY LDAC蓝牙接收器(一)预备篇
  15. 网络初始化失败,点击确定后将退出
  16. docker修改镜像
  17. 国债期货matlab,Matlab和国债期货的那些事儿~(四)——关键利率法在利率风险管理中的运用...
  18. 符合OpenDRIVE规范的xodr文件格式解读(1) ——road部分
  19. java计算机毕业设计计算机office课程平台MyBatis+系统+LW文档+源码+调试部署
  20. ESP8266-12F WIFI转串口模块底板设计

热门文章

  1. 入手评测 惠普暗影精灵 7怎么样
  2. HTML常用标签之表单标签
  3. Webpack(干货嗷)
  4. oracle修改temp表空间大小,默认TEMP表空间变更,释放空间
  5. 服务器uefi装系统教程,安装UEFI系统教程(完整版)
  6. urlparse学习
  7. 全球与中国中性服装市场现状及未来发展趋势(2022)
  8. 怎么升级计算机硬盘,电脑升级之硬盘篇:给电脑升级硬盘也有讲究,否则换了也白搭...
  9. JS向数组中添加元素的方式
  10. ImageAI(1)——10行Python即可实现深度学习的识别和检测任务