目录

一: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相关推荐

  1. 学习笔记Spark(六)—— Spark SQL应用(1)—— Spark SQL简介、环境配置

    一.Spark SQL简介 1.1.Spark SQL特性 Spark SQL是Spark Core之上的一个组件,它引入了一个称为SchemaRDD的新- 数据抽象,它为结构化和半结构化数据提供支持 ...

  2. Spark SQL: Relational Data Processing in Spark

    Spark SQL: Relational Data Processing in Spark Spark SQL : Spark中关系型处理模块 说明: 类似这样的说明并非是原作者的内容翻译,而是本篇 ...

  3. spark sql教程_如何使用Spark SQL:动手教程

    spark sql教程 在本系列的第一部分中,我们研究了使用Apache Spark SQL和DataFrames "大规模"利用关系数据库的功能方面的进展. 现在,我们将基于现实 ...

  4. 学习笔记Spark(七)—— Spark SQL应用(2)—— Spark DataFrame基础操作

    二.Spark DataFrame基础操作 2.1.DataFrame DataFrame是一种不可变的分布式数据集,这种数据集被组织成指定的列,类似于关系数据库中的表. 数据集的每一列都带有名称和类 ...

  5. Spark大数据-基于Hive和Spark的淘宝双11数据分析与预测

    基于Hive和Spark的淘宝双11数据分析与预测 1.系统和环境要求(版本仅供参考): Linux: centos7 MySQL: 5.7.16 Hadoop: 2.7.1 Hive: 1.2.1 ...

  6. 学习笔记Spark(八)—— Spark SQL应用(3)—— Spark DataSet基础操作

    三.Spark DataSet基本操作 3.1.DataSet简介 DataSet是分布式的数据集合,DataSet提供了强类型支持,也是在RDD的每行数据加了类型约束. DateSet整合了RDD和 ...

  7. 日志分析 进入大数据Spark SQL的世界

    以慕课网日志分析为例 进入大数据 Spark SQL 的世界 这篇blog是这个项目的总结,因为从别的地方学习过Hadoop.Spark的一些基础知识了,所以这部分略过.针对自身的不足,我抛出一些问题 ...

  8. 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 ...

  9. hive编程指南电子版_第三篇|Spark SQL编程指南

    在<第二篇|Spark Core编程指南>一文中,对Spark的核心模块进行了讲解.本文将讨论Spark的另外一个重要模块--Spark SQL,Spark SQL是在Shark的基础之上 ...

最新文章

  1. 认识Linux设备驱动模型和Kobject
  2. java swing 组件技术(上)
  3. linux修改文件句柄数生效_修改Linux的open files参数是,立即生效,无需重启
  4. python 头条 上传_Python+selenium自动化之文件上传
  5. python里面的dict和set
  6. JSP和Tag之文件上传
  7. java导入jar包源码_eclipse中导入jar包的源码
  8. 51NOD 1623 完美消除 数位DP
  9. django模板-if标签、for标签、自定义标签和过滤器
  10. vs编译时出现大量ws2def.h的错误的解决方法
  11. 我的NVIDIA开发者之旅——Caffe教程(3)使用sklearn和caffe进行简单逻辑回归实践
  12. Windows安装Redis新手教程
  13. ralink网卡驱动 linux,Ralink for linux Usb无线网卡驱动编译
  14. 程序员在国外:我用20天在加拿大找到首份工作
  15. hibernate的检索策略(抓取策略)
  16. mysql求和语句大全_经典SQL语句大全(1)
  17. win10通过Laragon配置Laravel
  18. 消防系统数据服务器,数据中心消防安全措施必须齐全完备
  19. 【BZOJ2844】albus就是要第一个出场——线性基
  20. PDF中的表格导入到Excel(分割)

热门文章

  1. 第三次作业 --必应词典 测试评价
  2. BIOTIN-PEG-NH2,生物素-聚乙二醇-氨基科研试剂简介,Biotin-PEG-Amine
  3. dedecms中模板函数
  4. 公司手机打卡app时间和百度时间差30秒解决
  5. Dubbo技术知识总结之六——Dubbo服务调用链路
  6. Linux----FFmpeg直播推流
  7. 二进制颜色代码大全(含图)透明度与十六进制代码转换
  8. 百度与谷歌蜘蛛抓取 配置
  9. 虚拟现实技术-给人脸加眼镜
  10. 华为鸿蒙真的能上市吗,华为p40什么时候上市 或用鸿蒙真的吗