class SparkSession extends Serializable with Closeable with Logging
The entry point to programming Spark with the Dataset and DataFrame API.
In environments that this has been created upfront (e.g. REPL, notebooks), use the builder to get an existing session:
SparkSession.builder().getOrCreate()
The builder can also be used to create a new session:
SparkSession.builder
.remote("sc://localhost:15001/myapp")
.getOrCreate()- Alphabetic
- By Inheritance
- SparkSession
- Logging
- Closeable
- AutoCloseable
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
addArtifact(source: String, target: String): Unit
Add a single artifact to the session while preserving the directory structure specified by
targetunder the session's working directory of that particular file extension.Add a single artifact to the session while preserving the directory structure specified by
targetunder the session's working directory of that particular file extension.Supported target file extensions are .jar and .class.
Example
addArtifact("/Users/dummyUser/files/foo/bar.class", "foo/bar.class") addArtifact("/Users/dummyUser/files/flat.class", "flat.class") // Directory structure of the session's working directory for class files would look like: // ${WORKING_DIR_FOR_CLASS_FILES}/flat.class // ${WORKING_DIR_FOR_CLASS_FILES}/foo/bar.class
- Annotations
- @Experimental()
- Since
4.0.0
-
def
addArtifact(bytes: Array[Byte], target: String): Unit
Add a single in-memory artifact to the session while preserving the directory structure specified by
targetunder the session's working directory of that particular file extension.Add a single in-memory artifact to the session while preserving the directory structure specified by
targetunder the session's working directory of that particular file extension.Supported target file extensions are .jar and .class.
Example
addArtifact(bytesBar, "foo/bar.class") addArtifact(bytesFlat, "flat.class") // Directory structure of the session's working directory for class files would look like: // ${WORKING_DIR_FOR_CLASS_FILES}/flat.class // ${WORKING_DIR_FOR_CLASS_FILES}/foo/bar.class
- Annotations
- @Experimental()
- Since
4.0.0
-
def
addArtifact(uri: URI): Unit
Add a single artifact to the client session.
Add a single artifact to the client session.
Currently it supports local files with extensions .jar and .class and Apache Ivy URIs
- Annotations
- @Experimental()
- Since
3.4.0
-
def
addArtifact(path: String): Unit
Add a single artifact to the client session.
Add a single artifact to the client session.
Currently only local files with extensions .jar and .class are supported.
- Annotations
- @Experimental()
- Since
3.4.0
-
def
addArtifacts(uri: URI*): Unit
Add one or more artifacts to the session.
Add one or more artifacts to the session.
Currently it supports local files with extensions .jar and .class and Apache Ivy URIs
- Annotations
- @Experimental() @varargs()
- Since
3.4.0
-
def
addTag(tag: String): Unit
Add a tag to be assigned to all the operations started by this thread in this session.
Add a tag to be assigned to all the operations started by this thread in this session.
Often, a unit of execution in an application consists of multiple Spark executions. Application programmers can use this method to group all those jobs together and give a group tag. The application can use
org.apache.spark.sql.SparkSession.interruptTagto cancel all running running executions with this tag. For example:// In the main thread: spark.addTag("myjobs") spark.range(10).map(i => { Thread.sleep(10); i }).collect() // In a separate thread: spark.interruptTag("myjobs")
There may be multiple tags present at the same time, so different parts of application may use different tags to perform cancellation at different levels of granularity.
- tag
The tag to be added. Cannot contain ',' (comma) character or be an empty string.
- Since
3.5.0
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
lazy val
catalog: Catalog
Interface through which the user may create, drop, alter or query underlying databases, tables, functions etc.
Interface through which the user may create, drop, alter or query underlying databases, tables, functions etc.
- Since
3.5.0
-
def
clearTags(): Unit
Clear the current thread's operation tags.
Clear the current thread's operation tags.
- Since
3.5.0
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @IntrinsicCandidate()
-
def
close(): Unit
Close the SparkSession.
Close the SparkSession.
Release the current session and close the GRPC connection to the server. The API will not error if any of these operations fail. Closing a closed session is a no-op.
Close the allocator. Fail if there are still open SparkResults.
- Definition Classes
- SparkSession → Closeable → AutoCloseable
- Since
3.4.0
-
val
conf: RuntimeConfig
Runtime configuration interface for Spark.
Runtime configuration interface for Spark.
This is the interface through which the user can get and set all Spark configurations that are relevant to Spark SQL. When getting the value of a config, his defaults to the value set in server, if any.
- Since
3.4.0
-
def
createDataFrame(data: List[_], beanClass: Class[_]): DataFrame
Applies a schema to a List of Java Beans.
Applies a schema to a List of Java Beans.
WARNING: Since there is no guaranteed ordering for fields in a Java Bean, SELECT * queries will return the columns in an undefined order.
- Since
3.4.0
-
def
createDataFrame(rows: List[Row], schema: StructType): DataFrame
:: DeveloperApi :: Creates a
DataFramefrom ajava.util.Listcontaining Rows using the given schema.:: DeveloperApi :: Creates a
DataFramefrom ajava.util.Listcontaining Rows using the given schema. It is important to make sure that the structure of every Row of the provided List matches the provided schema. Otherwise, there will be runtime exception.- Since
3.4.0
-
def
createDataFrame[A <: Product](data: Seq[A])(implicit arg0: scala.reflect.api.JavaUniverse.TypeTag[A]): DataFrame
Creates a
DataFramefrom a local Seq of Product.Creates a
DataFramefrom a local Seq of Product.- Since
3.4.0
-
def
createDataset[T](data: List[T])(implicit arg0: Encoder[T]): Dataset[T]
Creates a Dataset from a
java.util.Listof a given type.Creates a Dataset from a
java.util.Listof a given type. This method requires an encoder (to convert a JVM object of typeTto and from the internal Spark SQL representation) that is generally created automatically through implicits from aSparkSession, or can be created explicitly by calling static methods on Encoders.Java Example
List<String> data = Arrays.asList("hello", "world"); Dataset<String> ds = spark.createDataset(data, Encoders.STRING());
- Since
3.4.0
-
def
createDataset[T](data: Seq[T])(implicit arg0: Encoder[T]): Dataset[T]
Creates a Dataset from a local Seq of data of a given type.
Creates a Dataset from a local Seq of data of a given type. This method requires an encoder (to convert a JVM object of type
Tto and from the internal Spark SQL representation) that is generally created automatically through implicits from aSparkSession, or can be created explicitly by calling static methods on Encoders.Example
import spark.implicits._ case class Person(name: String, age: Long) val data = Seq(Person("Michael", 29), Person("Andy", 30), Person("Justin", 19)) val ds = spark.createDataset(data) ds.show() // +-------+---+ // | name|age| // +-------+---+ // |Michael| 29| // | Andy| 30| // | Justin| 19| // +-------+---+
- Since
3.4.0
- def dbrVersion: String
-
val
emptyDataFrame: DataFrame
Returns a
DataFramewith no rows or columns.Returns a
DataFramewith no rows or columns.- Since
3.4.0
-
def
emptyDataset[T](implicit arg0: Encoder[T]): Dataset[T]
Creates a new Dataset of type T containing zero elements.
Creates a new Dataset of type T containing zero elements.
- Since
3.4.0
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
execute(extension: Array[Byte]): Unit
- Annotations
- @DeveloperApi()
-
def
execute(command: Command): Seq[ExecutePlanResponse]
- Annotations
- @Since( "4.0.0" ) @DeveloperApi()
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
def
getTags(): Set[String]
Get the tags that are currently set to be assigned to all the operations started by this thread.
Get the tags that are currently set to be assigned to all the operations started by this thread.
- Since
3.5.0
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
def
initializeLogIfNecessary(isInterpreter: Boolean, silent: Boolean): Boolean
- Attributes
- protected
- Definition Classes
- Logging
-
def
initializeLogIfNecessary(isInterpreter: Boolean): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
interruptAll(): Seq[String]
Interrupt all operations of this session currently running on the connected server.
Interrupt all operations of this session currently running on the connected server.
- returns
sequence of operationIds of interrupted operations. Note: there is still a possibility of operation finishing just as it is interrupted.
- Since
3.5.0
-
def
interruptOperation(operationId: String): Seq[String]
Interrupt an operation of this session with the given operationId.
Interrupt an operation of this session with the given operationId.
- returns
sequence of operationIds of interrupted operations. Note: there is still a possibility of operation finishing just as it is interrupted.
- Since
3.5.0
-
def
interruptTag(tag: String): Seq[String]
Interrupt all operations of this session with the given operation tag.
Interrupt all operations of this session with the given operation tag.
- returns
sequence of operationIds of interrupted operations. Note: there is still a possibility of operation finishing just as it is interrupted.
- Since
3.5.0
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isTraceEnabled(): Boolean
- Attributes
- protected
- Definition Classes
- Logging
-
def
log: Logger
- Attributes
- protected
- Definition Classes
- Logging
-
def
logDebug(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logDebug(entry: LogEntry, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logDebug(entry: LogEntry): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logDebug(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logError(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logError(entry: LogEntry, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logError(entry: LogEntry): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logError(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logInfo(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logInfo(entry: LogEntry, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logInfo(entry: LogEntry): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logInfo(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logName: String
- Attributes
- protected
- Definition Classes
- Logging
-
def
logNativeProto(dbrLogBytes: Array[Byte]): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logTrace(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logTrace(entry: LogEntry, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logTrace(entry: LogEntry): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logTrace(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logWarning(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logWarning(entry: LogEntry, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logWarning(entry: LogEntry): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logWarning(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
newDataFrame(extension: Array[Byte]): DataFrame
- Annotations
- @DeveloperApi()
-
def
newDataFrame(f: (Builder) ⇒ Unit): DataFrame
- Annotations
- @DeveloperApi()
-
def
newDataFrame(plan: Plan): DataFrame
- Annotations
- @DeveloperApi()
-
def
newDataset[T](extension: Array[Byte], encoder: AgnosticEncoder[T]): Dataset[T]
- Annotations
- @DeveloperApi()
-
def
newDataset[T](encoder: AgnosticEncoder[T])(f: (Builder) ⇒ Unit): Dataset[T]
- Annotations
- @DeveloperApi()
- def newSession(): SparkSession
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- lazy val perserveCasing: Boolean
-
def
range(start: Long, end: Long, step: Long, numPartitions: Int): Dataset[Long]
Creates a Dataset with a single
LongTypecolumn namedid, containing elements in a range fromstarttoend(exclusive) with a step value, with partition number specified.Creates a Dataset with a single
LongTypecolumn namedid, containing elements in a range fromstarttoend(exclusive) with a step value, with partition number specified.- Since
3.4.0
-
def
range(start: Long, end: Long, step: Long): Dataset[Long]
Creates a Dataset with a single
LongTypecolumn namedid, containing elements in a range fromstarttoend(exclusive) with a step value.Creates a Dataset with a single
LongTypecolumn namedid, containing elements in a range fromstarttoend(exclusive) with a step value.- Since
3.4.0
-
def
range(start: Long, end: Long): Dataset[Long]
Creates a Dataset with a single
LongTypecolumn namedid, containing elements in a range fromstarttoend(exclusive) with step value 1.Creates a Dataset with a single
LongTypecolumn namedid, containing elements in a range fromstarttoend(exclusive) with step value 1.- Since
3.4.0
-
def
range(end: Long): Dataset[Long]
Creates a Dataset with a single
LongTypecolumn namedid, containing elements in a range from 0 toend(exclusive) with step value 1.Creates a Dataset with a single
LongTypecolumn namedid, containing elements in a range from 0 toend(exclusive) with step value 1.- Since
3.4.0
-
def
read: DataFrameReader
Returns a DataFrameReader that can be used to read non-streaming data in as a
DataFrame.Returns a DataFrameReader that can be used to read non-streaming data in as a
DataFrame.sparkSession.read.parquet("/path/to/file.parquet") sparkSession.read.schema(schema).json("/path/to/file.json")
- Since
3.4.0
-
def
readStream: DataStreamReader
Returns a
DataStreamReaderthat can be used to read streaming data in as aDataFrame.Returns a
DataStreamReaderthat can be used to read streaming data in as aDataFrame.sparkSession.readStream.parquet("/path/to/directory/of/parquet/files") sparkSession.readStream.schema(schema).json("/path/to/directory/of/json/files")
- Since
3.5.0
-
def
registerClassFinder(finder: ClassFinder): Unit
Register a ClassFinder for dynamically generated classes.
Register a ClassFinder for dynamically generated classes.
- Annotations
- @Experimental()
- Since
3.5.0
-
def
removeTag(tag: String): Unit
Remove a tag previously added to be assigned to all the operations started by this thread in this session.
Remove a tag previously added to be assigned to all the operations started by this thread in this session. Noop if such a tag was not added earlier.
- tag
The tag to be removed. Cannot contain ',' (comma) character or be an empty string.
- Since
3.5.0
- def scalaVersion: String
-
def
sql(query: String): DataFrame
Executes a SQL query using Spark, returning the result as a
DataFrame.Executes a SQL query using Spark, returning the result as a
DataFrame. This API eagerly runs DDL/DML commands, but not for SELECT queries.- Since
3.4.0
-
def
sql(sqlText: String, args: Map[String, Any]): DataFrame
Executes a SQL query substituting named parameters by the given arguments, returning the result as a
DataFrame.Executes a SQL query substituting named parameters by the given arguments, returning the result as a
DataFrame. This API eagerly runs DDL/DML commands, but not for SELECT queries.- sqlText
A SQL statement with named parameters to execute.
- args
A map of parameter names to Java/Scala objects that can be converted to SQL literal expressions. See Supported Data Types for supported value types in Scala/Java. For example, map keys: "rank", "name", "birthdate"; map values: 1, "Steven", LocalDate.of(2023, 4, 2). Map value can be also a
Columnof a literal or collection constructor functions such asmap(),array(),struct(), in that case it is taken as is.
- Annotations
- @Experimental()
- Since
3.4.0
-
def
sql(sqlText: String, args: Map[String, Any]): DataFrame
Executes a SQL query substituting named parameters by the given arguments, returning the result as a
DataFrame.Executes a SQL query substituting named parameters by the given arguments, returning the result as a
DataFrame. This API eagerly runs DDL/DML commands, but not for SELECT queries.- sqlText
A SQL statement with named parameters to execute.
- args
A map of parameter names to Java/Scala objects that can be converted to SQL literal expressions. See Supported Data Types for supported value types in Scala/Java. For example, map keys: "rank", "name", "birthdate"; map values: 1, "Steven", LocalDate.of(2023, 4, 2). Map value can be also a
Columnof a literal or collection constructor functions such asmap(),array(),struct(), in that case it is taken as is.
- Annotations
- @Experimental()
- Since
3.4.0
-
def
sql(sqlText: String, args: Array[_]): DataFrame
Executes a SQL query substituting positional parameters by the given arguments, returning the result as a
DataFrame.Executes a SQL query substituting positional parameters by the given arguments, returning the result as a
DataFrame. This API eagerly runs DDL/DML commands, but not for SELECT queries.- sqlText
A SQL statement with positional parameters to execute.
- args
An array of Java/Scala objects that can be converted to SQL literal expressions. See <a href="https://spark.apache.org/docs/latest/sql-ref-datatypes.html"> Supported Data Types for supported value types in Scala/Java. For example: 1, "Steven", LocalDate.of(2023, 4, 2). A value can be also a
Columnof a literal or collection constructor functions such asmap(),array(),struct(), in that case it is taken as is.
- Annotations
- @Experimental()
- Since
3.5.0
-
def
stop(): Unit
Synonym for
close().Synonym for
close().- Since
3.4.0
- lazy val streams: StreamingQueryManager
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
table(tableName: String): DataFrame
Returns the specified table/view as a
DataFrame.Returns the specified table/view as a
DataFrame. If it's a table, it must support batch reading and the returned DataFrame is the batch scan query plan of this table. If it's a view, the returned DataFrame is simply the query plan of the view, which can either be a batch or streaming query plan.- tableName
is either a qualified or unqualified name that designates a table or view. If a database is specified, it identifies the table/view from the database. Otherwise, it first attempts to find a temporary view with the given name and then match the table/view from the current database. Note that, the global temporary view database is also valid here.
- Since
3.4.0
-
def
time[T](f: ⇒ T): T
Executes some code block and prints to stdout the time taken to execute the block.
Executes some code block and prints to stdout the time taken to execute the block. This is available in Scala only and is used primarily for interactive testing and debugging.
- Since
3.4.0
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
tvf: TableValuedFunction
Returns a TableValuedFunction that can be used to call a table-valued function (TVF).
Returns a TableValuedFunction that can be used to call a table-valued function (TVF).
- Since
4.0.0
-
lazy val
udf: UDFRegistration
A collection of methods for registering user-defined functions (UDF).
A collection of methods for registering user-defined functions (UDF).
The following example registers a Scala closure as UDF:
sparkSession.udf.register("myUDF", (arg1: Int, arg2: String) => arg2 + arg1)
The following example registers a UDF in Java:
sparkSession.udf().register("myUDF", (Integer arg1, String arg2) -> arg2 + arg1, DataTypes.StringType);
- Since
3.5.0
- Note
The user-defined functions must be deterministic. Due to optimization, duplicate invocations may be eliminated or the function may even be invoked more times than it is present in the query.
- def version: String
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
withLogContext(context: HashMap[String, String])(body: ⇒ Unit): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
object
implicits extends SQLImplicits with Serializable
(Scala-specific) Implicit methods available in Scala for converting common names and Symbols into Columns, and for converting common Scala objects into DataFrame
s.(Scala-specific) Implicit methods available in Scala for converting common names and Symbols into Columns, and for converting common Scala objects into DataFrame
s.val sparkSession = SparkSession.builder.getOrCreate() import sparkSession.implicits._
- Since
3.4.0
Deprecated Value Members
-
def
execute(extension: Any): Unit
- Annotations
- @DeveloperApi() @deprecated
- Deprecated
(Since version 4.0.0) Use execute(Array[Byte]) instead
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] ) @Deprecated
- Deprecated
-
def
newDataFrame(extension: Any): DataFrame
- Annotations
- @DeveloperApi() @deprecated
- Deprecated
(Since version 4.0.0) Use newDataFrame(Array[Byte]) instead
-
def
newDataset[T](extension: Any, encoder: AgnosticEncoder[T]): Dataset[T]
- Annotations
- @DeveloperApi() @deprecated
- Deprecated
(Since version 4.0.0) Use newDataFrame(Array[Byte], AgnosticEncoder[T]) instead