SparkSQL & Spark on Hive & Hive on Spark
刚开始接触Spark被Hive在Spark中的作用搞得云里雾里,这里简要介绍下,备忘。
参考:https://blog.csdn.net/zuochang_liu/article/details/82292076
SparkSQL:是一个完全不依赖Hive的SQL引擎。
Spark On Hive
通过sparksql,加载hive的配置文件,获取到hive的元数据信息;spark sql获取到hive的元数据信息之后就可以拿到hive的所有表的数据;接下来就可以通过spark sql来操作hive表中的数据。也就是说仅仅是将Hive作为一个数据仓库,并没有用到Hive的SQL执行引擎的能力。代码在内核代码spark-hive_2.11工程中。
Hive On Spark
是把hive查询从mapreduce 的mr (hadoop 计算引擎)操作替换为spark rdd 操作;将HQL翻译成分布式可以执行的Spark程序。Hive和SparkSQL都不负责计算。也就是一个为Spark计算框架定制的Hive。和Hive基本上没有关系,耦合之处为:HQL、元数据库、UDF、序列化、反序列化机制。它是一个单独的工程,和Spark内核代码独立,但是Spark依赖于Hive On Spark, Spark中的某些模块执行过程中会调用Hive on Spark. 例如Spark JDBCServer:

Hive原来的计算模型是MR,频繁操作磁盘(将中间结果写入到HDFS中)效率低。而Hive On Spark中使用了RDD(Dataframe),然后运行在spark集群上面。元数据保存在mysql中,其中包含了hive表的描述信息,描述了那些数据库、表,以及表有多少列,每一列都是什么类型,还要描述表的数据保存在HDFS的什么位置。
Hive元数据库的功能
hive的元数据(metadata)建立了一种映射关系,执行HQL是,先到Mysql元数据库中查找描述信息,然后根据描述信息生成任务,然后将任务下发到spark集群中执行。hive on spark使用的仅仅是hive的标准和规范,不需要有hive数据库一样可以使用。要使用Hive的标准需要将hive的配置文件放在spark的conf目录下。没有安装Hive组件也没有影响。
要在Spark-Submit进程中使用开启spark对hive的支持:
val session = SparkSession.builder()
.master("local")
.appName("xx")
.enableHiveSupport()
.getOrCreate()
SparkSQL & Spark on Hive & Hive on Spark的更多相关文章
- spark2.3.0 配置spark sql 操作hive
spark可以通过读取hive的元数据来兼容hive,读取hive的表数据,然后在spark引擎中进行sql统计分析,从而,通过spark sql与hive结合实现数据分析将成为一种最佳实践.配置步骤 ...
- Spark记录-源码编译spark2.2.0(结合Hive on Spark/Hive on MR2/Spark on Yarn)
#spark2.2.0源码编译 #组件:mvn-3.3.9 jdk-1.8 #wget http://mirror.bit.edu.cn/apache/spark/spark-2.2.0/spark- ...
- Spark SQL与Hive on Spark的比较
简要介绍了SparkSQL与Hive on Spark的区别与联系 一.关于Spark 简介 在Hadoop的整个生态系统中,Spark和MapReduce在同一个层级,即主要解决分布式计算框架的问题 ...
- Hive on Spark和Spark sql on Hive,你能分的清楚么
摘要:结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序. 本文分享自华为云社区<Hive on Spark和Spark sql o ...
- spark+hcatalog操作hive表及其数据
package iie.hadoop.hcatalog.spark; import iie.udps.common.hcatalog.SerHCatInputFormat; import iie.ud ...
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
- Spark整合HBase,Hive
背景: 场景需求1:使用spark直接读取HBASE表 场景需求2:使用spark直接读取HIVE表 场景需求3:使用spark读取HBASE在Hive的外表 摘要: 1.背景 2.提交脚本 内容 场 ...
- [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子
[Spark][Hive][Python][SQL]Spark 读取Hive表的小例子$ cat customers.txt 1 Ali us 2 Bsb ca 3 Carls mx $ hive h ...
- [Spark][Hive]Hive的命令行客户端启动:
[Spark][Hive]Hive的命令行客户端启动: [training@localhost Desktop]$ chkconfig | grep hive hive-metastore 0:off ...
随机推荐
- Lambda 表达式遍历集合时用remove方法删除list集合中满足条件的元素问题
一:循环遍历list集合的四种方式 简单for循环 iterator循环 增加for循环 Lanbda表达式 二:四种遍历方式的用法示例 //简单for循环 List<SalaryAdjustm ...
- Mysql常用sql语句(23)- update 修改数据
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 update 也是DML语句哦(数据操作语言) ...
- MapReduce计算框架的核心编程思想
@ 目录 概念 MapReduce中常用的组件 概念 Job(作业) : 一个MapReduce程序称为一个Job. MRAppMaster(MR任务的主节点): 一个Job在运行时,会先启动一个进程 ...
- 在Java中使用AES加密
本文转载https://blog.csdn.net/z69183787/article/details/82746686
- layui弹窗里面 session过期 后跳转到登录页面
1.在登录页面添加 <script> $(function () { if (top != window) { layer.msg("登录失效", {icon: 5}) ...
- 【翻译】.NET 5中的性能改进
[翻译].NET 5中的性能改进 在.NET Core之前的版本中,其实已经在博客中介绍了在该版本中发现的重大性能改进. 从.NET Core 2.0到.NET Core 2.1到.NET Core ...
- Kafka 信息整理
请说明什么是传统的消息传递方法? 传统的消息传递方法包括两种: ·排队:在队列中,一组用户可以从服务器中读取消息,每条消息都发送给其中一个人. ·发布-订阅:在这个模型中,消息被广播给所有的用户. 为 ...
- Cyber Security - Palo Alto Firewall Objects Addresses, Services, and Groups(3)
LDAP Authentication and Remote Users and Groups Create Remote User Objects and LDAP Integration: sam ...
- P2060 马步距离(洛谷)
我们无论遇到什么困难,都不要拖,微笑着面对他,战胜拖延的最好方法就是面对拖延. 今天又拖延了…… 早晨听完老师讲课,本想做一道题练练手的,结果因为懒,瘫了一上午.最后在固定的刷题时间去面对了这道题,然 ...
- 集训作业 洛谷P1866 编号
这个题是个数学题啊. 总体思路不是很难,每个兔子有一个编号,只要不停的看下一个兔子有多少可选编号,再乘上之前的所有可能性就可以算出一共的编号方法. #include<iostream> # ...