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:
-
catalogBuilder
function to create a SessionCatalog (i.e.() ⇒ SessionCatalog
) -
analyzerBuilder
function to create an Analyzer (i.e.() ⇒ Analyzer
) -
optimizerBuilder
function to create an Optimizer (i.e.() ⇒ Optimizer
) -
resourceLoaderBuilder
function to create aSessionResourceLoader
(i.e.() ⇒ SessionResourceLoader
) -
createQueryExecution
function to create a QueryExecution given a LogicalPlan (i.e.LogicalPlan ⇒ QueryExecution
) -
createClone
function to clone theSessionState
given 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
|
|