Spark SQL之延伸Hive On Spark
目录
一:Spark SQL 与 Hive On Spark的区别
二:Hive的基本工作原理
三:Hive On Spark的计算原理
四:Hive On Spark的优化点
五:RPC了解
一:Spark SQL 与 Hive On Spark的区别
Spark SQL是Spark是Spark的一个项目。
研发出来的针对各种数据源,包括Hive、JSON、Parquet、JDBC、RDD等都可以执行查询的,一套基于Spark计算引擎的查询引擎
Hive On Spark是Hive的一个项目
不通过MapReduce作为唯一的查询引擎,而是将Spark作为底层的查询引擎
二:Hive的基本工作原理
Hive QL语句 =>
语法分析 => AST =>
生成逻辑执行计划 => Operator Tree =>
优化逻辑执行计划 => Optimized Operator Tree =>
生成物理执行计划 => Task Tree =>
优化物理执行计划 => Optimized Task Tree =>
执行优化后的Optimized Task Tree
三:Hive On Spark的计算原理
1、将Hive表作为Spark RDD来进行操作
2、使用Hive原语
对于一些针对RDD的操作,比如groupByKey、sortByKey等。不使用Spark的transformation操作和原语
3、新的物理执行计划生成机制
使用SparkCompiler将逻辑执行计划,即Operator Tree,转换为Task Tree。提交Spark Task给Spark进行执行。
4、SparkContext生命周期
Hive On Spark会为每个用户的会话: 执行一次SQL语句,创建一个SparkContext
5、本地和远程运行模式
本地:将Spark Master设置为local,比如set spark.master=local
SparkContext与客户端运行在一个JVM中
远程:将Spark Master设置为Master的地址,那么就是远程模式
SparkContext会在远程的JVM中启动
通过RPC与远程JVM中的SparkContext进行通信
四:Hive On Spark的优化点
1、Map Join
Spark SQL默认对join是支持使用broadcast机制将小表广播到各个节点上,以进行join的
目前采取的是,类似乎MapReduce的Distributed Cache机制,即提高HDFS replica factor的复制因子,以让数据在每个计算节点上都有一个备份,从而可以在本地进行数据读取
2、Cache Table
对于某些需要对一张表执行多次操作的场景,Hive On Spark内部做了优化,即将要多次操作的表cache到内存中,以便于提升性能
五:RPC了解
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议
步骤:
运行时,一次客户机对服务器的RPC调用,大致有如下十步:
1.调用客户端句柄;执行传送参数
2.调用本地系统内核发送网络消息
3.消息传送到远程主机
4.服务器句柄得到消息并取得参数
5.执行远程过程
6.执行的过程将结果返回服务器句柄
7.服务器句柄返回结果,调用远程系统内核
8.消息传回本地主机
9.客户句柄由内核接收消息
10.客户接收句柄返回的数据
Spark SQL之延伸Hive On Spark相关推荐
- 学习笔记Spark(六)—— Spark SQL应用(1)—— Spark SQL简介、环境配置
一.Spark SQL简介 1.1.Spark SQL特性 Spark SQL是Spark Core之上的一个组件,它引入了一个称为SchemaRDD的新- 数据抽象,它为结构化和半结构化数据提供支持 ...
- Spark SQL: Relational Data Processing in Spark
Spark SQL: Relational Data Processing in Spark Spark SQL : Spark中关系型处理模块 说明: 类似这样的说明并非是原作者的内容翻译,而是本篇 ...
- spark sql教程_如何使用Spark SQL:动手教程
spark sql教程 在本系列的第一部分中,我们研究了使用Apache Spark SQL和DataFrames "大规模"利用关系数据库的功能方面的进展. 现在,我们将基于现实 ...
- 学习笔记Spark(七)—— Spark SQL应用(2)—— Spark DataFrame基础操作
二.Spark DataFrame基础操作 2.1.DataFrame DataFrame是一种不可变的分布式数据集,这种数据集被组织成指定的列,类似于关系数据库中的表. 数据集的每一列都带有名称和类 ...
- Spark大数据-基于Hive和Spark的淘宝双11数据分析与预测
基于Hive和Spark的淘宝双11数据分析与预测 1.系统和环境要求(版本仅供参考): Linux: centos7 MySQL: 5.7.16 Hadoop: 2.7.1 Hive: 1.2.1 ...
- 学习笔记Spark(八)—— Spark SQL应用(3)—— Spark DataSet基础操作
三.Spark DataSet基本操作 3.1.DataSet简介 DataSet是分布式的数据集合,DataSet提供了强类型支持,也是在RDD的每行数据加了类型约束. DateSet整合了RDD和 ...
- 日志分析 进入大数据Spark SQL的世界
以慕课网日志分析为例 进入大数据 Spark SQL 的世界 这篇blog是这个项目的总结,因为从别的地方学习过Hadoop.Spark的一些基础知识了,所以这部分略过.针对自身的不足,我抛出一些问题 ...
- Spark SQL与外部数据源的操作(Spark SQL ——> CSV/JSON/Parquet/hive/mysql)
目录 一.Spark SQL支持的外部数据源 二.Spark SQL -> CSV 2.1 读CSV文件 a.有列名 b.无列名 2.2 写CSV文件 三.Spark SQL -> JSO ...
- hive编程指南电子版_第三篇|Spark SQL编程指南
在<第二篇|Spark Core编程指南>一文中,对Spark的核心模块进行了讲解.本文将讨论Spark的另外一个重要模块--Spark SQL,Spark SQL是在Shark的基础之上 ...
最新文章
- 认识Linux设备驱动模型和Kobject
- java swing 组件技术(上)
- linux修改文件句柄数生效_修改Linux的open files参数是,立即生效,无需重启
- python 头条 上传_Python+selenium自动化之文件上传
- python里面的dict和set
- JSP和Tag之文件上传
- java导入jar包源码_eclipse中导入jar包的源码
- 51NOD 1623 完美消除 数位DP
- django模板-if标签、for标签、自定义标签和过滤器
- vs编译时出现大量ws2def.h的错误的解决方法
- 我的NVIDIA开发者之旅——Caffe教程(3)使用sklearn和caffe进行简单逻辑回归实践
- Windows安装Redis新手教程
- ralink网卡驱动 linux,Ralink for linux Usb无线网卡驱动编译
- 程序员在国外:我用20天在加拿大找到首份工作
- hibernate的检索策略(抓取策略)
- mysql求和语句大全_经典SQL语句大全(1)
- win10通过Laragon配置Laravel
- 消防系统数据服务器,数据中心消防安全措施必须齐全完备
- 【BZOJ2844】albus就是要第一个出场——线性基
- PDF中的表格导入到Excel(分割)