SparkConf、SparkContext、SparkSession

SparkConf和SparkContext

任何Spark程序都是从SparkContext开始的,SparkContext的初始化需要一个SparkConf对象,SparkConf包含了Spark集群配置的各种参数.
初始化后,就可以使用SparkContext对象所包含的各种方法来创建和操作RDD的共享变量.
val conf = new SparkConf()
	.setMaster("master")
	.setAppName("appName")
val sc = new SparkContext(conf)
或者
val sc = new SparkContext("master","appName")	

SparkConf源码中作者注解
Once a SparkConf object is passed to Spark, it is cloned and can no longer be modified by the user.
一旦设置完成SparkConf,就不可不能修改,spark不支持在程序运行的时候修改参数。
对于单元测试,可以调用SparkConf(false)来跳过加载外部设置,并获得相同的配置,无论系统属性如何.
看看setMaster()和setAppName()
SparkConf、SparkContext、SparkSession_第1张图片
说到底都是调用了set()函数.set到底是何方神圣
SparkConf、SparkContext、SparkSession_第2张图片
logDeprecationWarning(key)是日志输出函数,防止输入参数名无效

SparkSession

SparkSession实质上是SQLContext和HiveContext的组合(未来可能还会加上StreamingContext),所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的.
SparkSession内部封装了SparkContext,所以计算实际上是由SparkContext完成的.

val spark = SparkSession.builder
	.master("master")
	.appname("appname")
	.getOrCreate()
或者
SparkSession.builder.config(conf=SparkConf())

//getOrCreate():有就拿过来,没有就创建,类似于单例模式

你可能感兴趣的:(Spark,Spark)