让你真正理解什么是SparkContext, SQLContext 和HiveContext

简介: 让你真正理解什么是SparkContext, SQLContext 和HiveContext

第一步spark driver 应用程序创建SparkContext,SparkContext 允许spark driver 应用程序通过资源管理器访问集群。资源管理器可以是Yarn,或则spark集群管理器。为了创建SparkContext,你可以第一步创建SparkConf,SparkConf存储的配置信息, Spark driver 应用程序将传给SparkContext。一些参数定义 Spark driver应用程序属性和用于分配集群资源。比如worker节点运行的executors 的number, memory 大小和cores。 Spark driver 应用程序可以通过setAppName() 自定义。你可以查看spark1.3.1 获取sparkconf的完整参数。SparkConf 文档(http://spark.apache.org/docs/1.3.1/api/scala/index.html

import org.apache.spark.SparkConf
val conf = new SparkConf().setAppName(“MySparkDriverApp”).setMaster(“spark://master:7077”).set(“spark.executor.memory”, “2g”)

现在我们有SparkConf可以传递给SparkContext,因此我们的应用程序知道如何访问集群。

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
val conf = new SparkConf().setAppName(“MySparkDriverApp”).setMaster(“spark://master:7077”).set(“spark.executor.memory”, “2g”)
val sc = new SparkContext(conf)


现在你的Spark driver应用程序有SparkContext,它知道使用和请求集群资源。如果使用是YARN,hadoop的resourcemanager (headnode)和 nodemanager (workernode) 将会为executors分配container 。如果资源有效的,在集群上executors 将会根据配置参数分配memory和cores。如果你使用Sparks 集群管理器,SparkMaster(headnode) 和SparkSlave (workernode) 将会使用分配在的executors。下面的图展示了他们之间的 driver 应用程序, 集群资源管理器 和executors关系

963bc63bdb205d8c4ba0c75514b790af.jpg


每一个spark driver 应用程序有自己的executors 在集群上。集群保持运行只要spark driver 应用程序有SparkContext。executors 运行用户code,运行计算和缓存应用程序的数据。SparkContext 创建job,分解为stages。

SparkSQL是spark的一个模块,SparkSQL 用来处理结构化数据,所以SparkSQL你的data必须定义schema.在spark1.3.1,sparksql继承dataframes 和a SQL 查询引擎。SparkSQL 有SQLContext 和HiveContext.HiveContext 继承SQLContext.Hortonworks 和  Spark社区建议使用HiveContext.你可以看到下面,当你运行spark-shell,它和driver应用程序是交互的,他会自动创建SparkContext 定义为sc和HiveContext 定义为sqlContext.HiveContext 允许执行sql查询以及Hive 命令.pyspark同样也是。你可以看下 Spark 1.3.1 文档,SQLContext 和HiveContext 在SQLContext documentation and HiveContext documentation(http://spark.apache.org/docs/1.3.1/api/scala/index.html#package


97a4f346a0c1325e31923b83c897232f.png

从上面看出,SparkContext其实是连接集群以及获取spark配置文件信息,然后运行在集群中。


SQLContext 和HiveContext


SQLContext:spark处理结构化数据的入口。允许创建DataFrame以及sql查询

HiveContext:spark sql执行引擎,集成hive数据,读取在classpath的 hive-site.xml配置文件配置Hive


目录
相关文章
|
5月前
|
SQL 机器学习/深度学习 分布式计算
Spark5:SparkSQL
Spark5:SparkSQL
62 0
|
3月前
|
存储 缓存 分布式计算
spark BlockManager粗讲
spark BlockManager粗讲
|
4月前
|
缓存 分布式计算 关系型数据库
Spark案例库V1.0版
Spark案例库V1.0版
27 0
|
5月前
|
消息中间件 分布式计算 监控
Spark6:Spark Steaming
Spark6:Spark Steaming
34 0
|
SQL 分布式计算 HIVE
spark2.2 SparkSession思考与总结1
spark2.2 SparkSession思考与总结1
76 0
spark2.2 SparkSession思考与总结1
|
SQL 缓存 分布式计算
spark2的SparkSession思考与总结2:SparkSession有哪些函数及作用是什么
spark2的SparkSession思考与总结2:SparkSession有哪些函数及作用是什么
198 0
|
SQL 机器学习/深度学习 分布式计算
【Spark】(一)初识 Spark
【Spark】(一)初识 Spark
144 0
【Spark】(一)初识 Spark
|
分布式计算 Spark Java
Spark2.4.0 SparkSession 源码分析
创建SparkContext new SparkSession
3233 0
|
存储 机器学习/深度学习 缓存
五分钟零基础介绍 spark
相信大家都听说过火的不能再火、炒得不能再炒的新一代大数据处理框架 Spark. 那么 Spark 是何方神圣?为何大有取代 Hadoop 的势头?Spark 内部又是如何工作的呢?我们会用几篇文章为大家一一介绍。 Hadoop:我不想知道我是怎么来的,我就想知道我是怎么没的? 还是从 Hadoop 处理海量数据的架构说起,一个 Hadoop job 通常都是这样的: 从 HDFS 读取输入数据; 在 Map 阶段使用用户定义的 mapper function, 然后把结果写入磁盘; 在 Reduce 阶段,从各个处于 Map 阶段的机器中读取 Map 计算的中间结果,使用用户定义的 r
113 0
|
分布式计算 资源调度 调度
Spark2.4.0 SparkContext 源码分析
createSparkEnv Started SparkUI 注册端点HeartbeatReceiver createTaskScheduler 启动任务调度器,指定默认任务调度模式FIFO,构建调度池 new DAGScheduler 注册DriverEndpoint端点:Coarse...
2900 0