abstract class SparkSession[DS[U] <: Dataset[U, DS]] extends Serializable with Closeable
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 .master("local") .appName("Word Count") .config("spark.some.config.option", "some-value") .getOrCreate()
- Alphabetic
- By Inheritance
- SparkSession
- Closeable
- AutoCloseable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new SparkSession()
Abstract Value Members
- abstract def addArtifact(source: String, target: String): Unit
Add a single artifact to the session while preserving the directory structure specified by
target
under the session's working directory of that particular file extension.Add a single artifact to the session while preserving the directory structure specified by
target
under 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
- abstract def addArtifact(bytes: Array[Byte], target: String): Unit
Add a single in-memory artifact to the session while preserving the directory structure specified by
target
under 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
target
under 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
- abstract def addArtifact(uri: URI): Unit
Add a single artifact to the current session.
Add a single artifact to the current session.
Currently it supports local files with extensions .jar and .class and Apache Ivy URIs.
- Annotations
- @Experimental()
- Since
4.0.0
- abstract def addArtifact(path: String): Unit
Add a single artifact to the current session.
Add a single artifact to the current session.
Currently only local files with extensions .jar and .class are supported.
- Annotations
- @Experimental()
- Since
4.0.0
- abstract 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
4.0.0
- abstract def catalog: Catalog[DS]
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
2.0.0
- abstract def close(): Unit
- Definition Classes
- Closeable → AutoCloseable
- Annotations
- @throws(classOf[java.io.IOException])
- abstract def createDataFrame(data: List[_], beanClass: Class[_]): DS[Row]
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
1.6.0
- abstract def createDataFrame(rows: List[Row], schema: StructType): DS[Row]
:: DeveloperApi :: Creates a
DataFrame
from ajava.util.List
containing org.apache.spark.sql.Rows using the given schema.It is important to make sure that the structure of every org.apache.spark.sql.Row of the provided List matches the provided schema.:: DeveloperApi :: Creates a
DataFrame
from ajava.util.List
containing org.apache.spark.sql.Rows using the given schema.It is important to make sure that the structure of every org.apache.spark.sql.Row of the provided List matches the provided schema. Otherwise, there will be runtime exception.- Annotations
- @DeveloperApi()
- Since
2.0.0
- abstract def createDataFrame[A <: Product](data: Seq[A])(implicit arg0: scala.reflect.api.JavaUniverse.TypeTag[A]): DS[Row]
Creates a
DataFrame
from a local Seq of Product.Creates a
DataFrame
from a local Seq of Product.- Since
2.0.0
- abstract def createDataset[T](data: List[T])(implicit arg0: Encoder[T]): DS[T]
Creates a Dataset from a
java.util.List
of a given type.Creates a Dataset from a
java.util.List
of a given type. This method requires an encoder (to convert a JVM object of typeT
to 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 onEncoders
.Java Example
List<String> data = Arrays.asList("hello", "world"); Dataset<String> ds = spark.createDataset(data, Encoders.STRING());
- Since
2.0.0
- abstract def createDataset[T](data: Seq[T])(implicit arg0: Encoder[T]): DS[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
T
to 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 onEncoders
.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
2.0.0
- abstract def emptyDataFrame: DS[Row]
Returns a
DataFrame
with no rows or columns.Returns a
DataFrame
with no rows or columns.- Annotations
- @transient()
- Since
2.0.0
- abstract def emptyDataset[T](implicit arg0: Encoder[T]): DS[T]
Creates a new Dataset of type T containing zero elements.
Creates a new Dataset of type T containing zero elements.
- Since
2.0.0
- abstract def newSession(): SparkSession[DS]
Start a new session with isolated SQL configurations, temporary tables, registered functions are isolated, but sharing the underlying
SparkContext
and cached data.Start a new session with isolated SQL configurations, temporary tables, registered functions are isolated, but sharing the underlying
SparkContext
and cached data.- Since
2.0.0
- Note
Other than the
SparkContext
, all shared state is initialized lazily. This method will force the initialization of the shared state to ensure that parent and child sessions are set up with the same shared state. If the underlying catalog implementation is Hive, this will initialize the metastore, which may take some time.
- abstract def range(start: Long, end: Long, step: Long, numPartitions: Int): DS[Long]
Creates a Dataset with a single
LongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with a step value, with partition number specified.Creates a Dataset with a single
LongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with a step value, with partition number specified.- Since
2.0.0
- abstract def range(start: Long, end: Long, step: Long): DS[Long]
Creates a Dataset with a single
LongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with a step value.Creates a Dataset with a single
LongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with a step value.- Since
2.0.0
- abstract def range(start: Long, end: Long): DS[Long]
Creates a Dataset with a single
LongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with step value 1.Creates a Dataset with a single
LongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with step value 1.- Since
2.0.0
- abstract def range(end: Long): DS[Long]
Creates a Dataset with a single
LongType
column namedid
, containing elements in a range from 0 toend
(exclusive) with step value 1.Creates a Dataset with a single
LongType
column namedid
, containing elements in a range from 0 toend
(exclusive) with step value 1.- Since
2.0.0
- abstract def read: DataFrameReader[DS]
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
2.0.0
- abstract def sql(sqlText: String, args: Map[String, Any]): DS[Row]
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
Column
of a literal or collection constructor functions such asmap()
,array()
,struct()
, in that case it is taken as is.
- Annotations
- @Experimental()
- Since
3.4.0
- abstract def sql(sqlText: String, args: Array[_]): DS[Row]
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
Column
of a literal or collection constructor functions such asmap()
,array()
,struct()
, in that case it is taken as is.
- Annotations
- @Experimental()
- Since
3.5.0
- abstract def table(tableName: String): DS[Row]
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
2.0.0
- abstract def 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
2.0.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.
- abstract def version: String
The version of Spark on which this application is running.
The version of Spark on which this application is running.
- Since
2.0.0
Concrete 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
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def sql(sqlText: String): DS[Row]
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
2.0.0
- def sql(sqlText: String, args: Map[String, Any]): DS[Row]
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
Column
of 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 stop(): Unit
Synonym for
close()
.Synonym for
close()
.- Since
2.0.0
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- 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
2.1.0
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)