Spark SQL 源码分析(二):SparkSession

SparkSession

Spark 2.0 之后,提供了 SparkSession 新的程序入口,替代了之前的 SqlContext 和 HiveContext,执行 SQL 和创建 DataFrame/Dataset。

SparkSession.builder()  
  .appName("demo")
  .master("yarn")
  .enableHiveSupport()
  .getOrCreate()

SparkSession 内部的属性:

  • sparkContext 全局唯一的 SparkContext 实例
  • sharedState 会话间共享的状态,包括 sparkContext、缓存的数据、监听器和外部系统交互的 Catalog 等
  • sessionState 会话间独立的状态,包括 SQL 配置、临时表、注册的 UDF 等

基于 Spark 2.3.0 版本