多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**1. SparkSession的作用** SparkSession 是 SparkSQL 的编程入口,是在 2.0 中引入的新API。<mark>旨在为 Spark编程提供统一的编程入口</mark>,意味着 SparkSession 整合了 SparkConf、SparkContext、SQLContext、HiveContext 以及 StreamingContext,其中 SQLContext、HiveContext是为了保持兼容被保留,StreamingContext 在未来可能会被加入。 <br/> 当创建了 SparkSession 对象后,可以间接拿到 sparkContext 与sqlContext 对象。所以在 2.0 版本后推荐使用 SparkSession 作为编程入口。 <br/> 在 Spark2.0 之前的版本中,spark shell 会自动创建一个 SparkContext 对象 sc,Spark2.0+ 中 spark shell 则会额外创建一个 SparkSession 对象 spark。如下所示。 ```shell [root@hadoop101 bin]# ./spark-shell --master local[*] Spark context available as 'sc' (master = local[*], app id = local-1620678616355). Spark session available as 'spark'. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 2.4.4 /_/ ``` <br/> **2. 手动创建 SparkSession** ```scala import org.apache.spark.sql.SparkSession val spark = SparkSession.builder.master("local[2]") .appName("appName") .getOrCreate() // 因为SparkSession封装了许多隐式转换,需要导入才能完成正常使用 import spark.implicts._ //假设 SparkSession 的实例为 spark ``` 注意:SparkSession 封装许多隐式转换,如 RDD->DataSet。所以需要导入隐式转换到当前作用域有些功能才能生效。SparkSession 将许多隐式转换封装在 implicits(单例对象)中。