在老的版本中,SparkSQL提供两种SQL查询起始点,一个叫SQLContext,用于Spark自己提供的sql查询,一个叫HiveContext,用于连接hive的查询。SparkSession是Spark 最新的SQL 查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext和HiveContext 上可用的API在SparkSession 上同样是可以使用的。SparkSession内部封装了sparkContext,所以计算实际上是由sparkContext完成的。
SparkSession= SQLContext + HiveContext
SparkSession 内部封装了 SparkContext
1.spark1.X
val sparkConf = new SparkConf().setAppName(this.getClass.getCanonicalName)
val sc = new SparkContext(sparkConf)
val hiveContext= new HiveContext(sc)
val sqlContext = new SQLContext(sc)
hiveContext与hive有部分耦合, 支持hql,是SQLContext的子类。
2.Spark2.X
val sparkConf = new SparkConf().setAppName("test")
val ssc =SparkSession,builder().config(sparkConf).enableHiveSupport().getOrCreate()
val sc = ssc.sparkContext()