scala> :type spark
org.apache.spark.sql.SparkSession
scala> :type spark.sessionState
org.apache.spark.sql.internal.SessionState
SessionState — State Separation Layer Between SparkSessions
SessionState is the state separation layer between Spark SQL sessions, including SQL configuration, tables, functions, UDFs, SQL parser, and everything else that depends on a SQLConf.
SessionState is available as the sessionState property of a SparkSession.
SessionState is created when SparkSession is requested to instantiateSessionState (when requested for the SessionState per spark.sql.catalogImplementation configuration property).
|
Note
|
When requested for the SessionState, There are two
|
| Name | Type | Description |
|---|---|---|
|
Initialized lazily (i.e. only when requested the first time) using the analyzerBuilder factory function. Used when…FIXME |
|
|
Metastore of tables and databases Used when…FIXME |
|
|
Used when…FIXME |
|
|
Used when…FIXME |
|
|
Used when…FIXME |
|
|
Used when…FIXME |
|
|
Used exclusively when |
|
|
|
Used when…FIXME |
|
Used when…FIXME |
|
|
|
Used to manage streaming queries in Spark Structured Streaming |
|
Interface to register user-defined functions. Used when…FIXME |
|
Note
|
SessionState is a private[sql] class and, given the package org.apache.spark.sql.internal, SessionState should be considered internal.
|
Creating SessionState Instance
SessionState takes the following when created:
-
catalogBuilderfunction to create a SessionCatalog (i.e.() ⇒ SessionCatalog) -
analyzerBuilderfunction to create an Analyzer (i.e.() ⇒ Analyzer) -
optimizerBuilderfunction to create an Optimizer (i.e.() ⇒ Optimizer) -
resourceLoaderBuilderfunction to create aSessionResourceLoader(i.e.() ⇒ SessionResourceLoader) -
createQueryExecutionfunction to create a QueryExecution given a LogicalPlan (i.e.LogicalPlan ⇒ QueryExecution) -
createClonefunction to clone theSessionStategiven a SparkSession (i.e.(SparkSession, SessionState) ⇒ SessionState)
clone Method
clone(newSparkSession: SparkSession): SessionState
clone…FIXME
|
Note
|
clone is used when…
|
"Executing" Logical Plan (Creating QueryExecution For LogicalPlan) — executePlan Method
executePlan(plan: LogicalPlan): QueryExecution
executePlan simply executes the createQueryExecution function on the input logical plan (that simply creates a QueryExecution with the current SparkSession and the input logical plan).
refreshTable Method
refreshTable(tableName: String): Unit
refreshTable…FIXME
|
Note
|
refreshTable is used…FIXME
|
Creating New Hadoop Configuration — newHadoopConf Method
newHadoopConf(): Configuration
newHadoopConf returns a new Hadoop Configuration (with the SparkContext.hadoopConfiguration and all the configuration properties of the SQLConf).
|
Note
|
newHadoopConf is used by ScriptTransformation, ParquetRelation, StateStoreRDD, and SessionState itself, and few other places.
|
Creating New Hadoop Configuration With Extra Options — newHadoopConfWithOptions Method
newHadoopConfWithOptions(options: Map[String, String]): Configuration
newHadoopConfWithOptions creates a new Hadoop Configuration with the input options set (except path and paths options that are skipped).
|
Note
|
|