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 ...
随机推荐
- Mysql常用sql语句(24)- delete 删除数据
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 delete 也属于DML语句(数据操纵语句) ...
- Linux 下载工具推荐: Motrix && qbittorrent
Linux下载介绍 Linux下其实下载工具还是蛮多的, 命令行的wget,curl,aria2,甚至于apt 但是个人日常使用下还是有图形化界面比较方便易用.大多数教程里推荐的Uget,可能是我也不 ...
- 04 Django模型层: Django-model进阶
一 QuerySet对象 1.1可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. Entry.objects.all()[:5] # ...
- 蜂鸟E203系列——Linux下运行hello world例程
欲观原文,请君移步 创建程序 在 -/hbird-e-sdk-master/software 路径下创建一个"helloworld"中文件夹 在 -/hbird-e-sdk-mas ...
- 数据可视化之PowerQuery篇(十四)产品关联度分析
https://zhuanlan.zhihu.com/p/64510355 逛超市的时候,面对货架上琳琅满目的商品,你会觉得这些商品的摆放,或者不同品类的货架分布是随机排列的吗,当然不是. 应该都听说 ...
- vue + echart 实现中国地图 和 省市地图(可切换省份)
一.中国地图 1.先导入echarts,然后再main.js里引入echarts // 引入echartsimport echarts from 'echarts'Vue.prototype.$ech ...
- Python Ethical Hacking - BACKDOORS(2)
Refactoring - Creating a Listener Class #!/usr/bin/env python import socket class Listener: def __in ...
- T4 字符串的修改 题解
有 A=a1a2a3„am,B=b1b2b3„bn 两个字符串(均为小写字母)现在要通过以下操作将 A 或 A 的一个后缀修改为 B: 1. 删除 删除掉 A 中的某一个字符. 2. 添加 将某一个字 ...
- 紧急处理RAC环境有一个监听down 的情况
初步处理 1. grid 登录查看是监听是否down掉 srvctl status listener -n node1 或者oracle登录 lsnrctl status 查看 如果掉了 grid 用 ...
- ajax原生js封装
不带注释的 function ajax(json) { json.type = json.type ? json.type : 'get'; json.async = json.async == fa ...