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 ...
随机推荐
- 51Nod 1534 棋子游戏 题解
题目 波雷卡普和瓦西里喜欢简单的逻辑游戏.今天他们玩了一个游戏,这个游戏在一个很大的棋盘上进行,他们每个人有一个棋子.他们轮流移动自己的棋子,波雷卡普先开始.每一步移动中,波雷卡普可以将他的棋子从(x ...
- List集合的遍历方式
遍历List集合的三种方法 List list = new ArrayList(); list.add("aaa"); list.add("bbb"); lis ...
- 最近用unity写三消游戏,mark一个准备用的unity插件,用来控制运动。
http://www.pixelplacement.com/itween/index.php itween 听说还不错!
- gitlab-ci部署实现持续集成(centos7)
一.gitlab安装 1. 环境准备 // selinux和 firewall 关闭 $ setenforce 0 $ sed -i "/^SELINUX/s/enforcing/disab ...
- day09 基本数据类型(中)
目录 一 列表(list) 1.作用 2.定义 3.类型转化 4.内置方法 4.1按索引取值 4.2切片 4.3长度 4.4成员运算 4.5往列表中加值 4.5.1追加 4.5.2追加列表 4.5.3 ...
- 正则表达式以及sed,awk用法 附带案例
则表达式 基本正则 ^ $ [ ] [^] . * \{n,m\} \{n,\} \(ro\)\{2\} \(\) 扩展正则 egrep grep - ...
- 谈谈你对 TCP 三次握手和四次挥手的理解
TCP三次握手: 1.客户端发送syn包到服务器,等待服务器确认接收. 2.服务器确认接收syn包并确认客户的syn,并发送回来一个syn+ack的包给客户端. 3.客户端确认接收服务器的syn+ac ...
- DVWA学习记录 PartⅦ
SQL Injection 1. 题目 SQL Injection,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的. 2. Low a. ...
- 【Python学习笔记七】从配置文件中读取参数
将一些需要更改或者固定的内容存放在配置文件中,通过读取配置文件来获取参数,这样修改以及使用起来比较方便 1.首先是配置文件的写法如下一个environment.ini文件: 里面“[]”存放的是sec ...
- layui :iframe 与 layer 的位置问题
最近有个项目是用 Layui 搭的,但是在layer的使用上遇到了问题. 简单的说,在父页面声明layer,在子页面中的子页面用window.parent调用那个父页面的layer. 讲道理应该是和i ...