Class SparkSession<DS extends Dataset<Object,DS>>
- All Implemented Interfaces:
Closeable
,Serializable
,AutoCloseable
- Direct Known Subclasses:
SparkSession
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()
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract void
addArtifact
(byte[] bytes, String target) Add a single in-memory artifact to the session while preserving the directory structure specified bytarget
under the session's working directory of that particular file extension.abstract void
addArtifact
(String path) Add a single artifact to the current session.abstract void
addArtifact
(String source, String target) Add a single artifact to the session while preserving the directory structure specified bytarget
under the session's working directory of that particular file extension.abstract void
addArtifact
(URI uri) Add a single artifact to the current session.void
addArtifacts
(URI... uri) Add one or more artifacts to the session.abstract void
addArtifacts
(scala.collection.immutable.Seq<URI> uri) Add one or more artifacts to the session.catalog()
Interface through which the user may create, drop, alter or query underlying databases, tables, functions etc.abstract DS
createDataFrame
(List<?> data, Class<?> beanClass) Applies a schema to a List of Java Beans.abstract DS
createDataFrame
(List<Row> rows, StructType schema) abstract <A extends scala.Product>
DScreateDataFrame
(scala.collection.immutable.Seq<A> data, scala.reflect.api.TypeTags.TypeTag<A> evidence$1) Creates aDataFrame
from a local Seq of Product.abstract <T> DS
createDataset
(List<T> data, Encoder<T> evidence$4) Creates aDataset
from ajava.util.List
of a given type.abstract <T> DS
createDataset
(scala.collection.immutable.Seq<T> data, Encoder<T> evidence$3) Creates aDataset
from a local Seq of data of a given type.abstract DS
Returns aDataFrame
with no rows or columns.abstract <T> DS
emptyDataset
(Encoder<T> evidence$2) Creates a newDataset
of type T containing zero elements.abstract SparkSession<DS>
Start a new session with isolated SQL configurations, temporary tables, registered functions are isolated, but sharing the underlyingSparkContext
and cached data.abstract DS
range
(long end) Creates aDataset
with a singleLongType
column namedid
, containing elements in a range from 0 toend
(exclusive) with step value 1.abstract DS
range
(long start, long end) Creates aDataset
with a singleLongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with step value 1.abstract DS
range
(long start, long end, long step) Creates aDataset
with a singleLongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with a step value.abstract DS
range
(long start, long end, long step, int numPartitions) Creates aDataset
with a singleLongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with a step value, with partition number specified.abstract DataFrameReader<DS>
read()
Returns aDataFrameReader
that can be used to read non-streaming data in as aDataFrame
.Executes a SQL query using Spark, returning the result as aDataFrame
.abstract DS
Executes a SQL query substituting positional parameters by the given arguments, returning the result as aDataFrame
.Executes a SQL query substituting named parameters by the given arguments, returning the result as aDataFrame
.abstract DS
Executes a SQL query substituting named parameters by the given arguments, returning the result as aDataFrame
.void
stop()
Synonym forclose()
.abstract DS
Returns the specified table/view as aDataFrame
.<T> T
time
(scala.Function0<T> f) Executes some code block and prints to stdout the time taken to execute the block.abstract UDFRegistration
udf()
A collection of methods for registering user-defined functions (UDF).abstract String
version()
The version of Spark on which this application is running.
-
Constructor Details
-
SparkSession
public SparkSession()
-
-
Method Details
-
addArtifact
Add a single artifact to the current session.Currently only local files with extensions .jar and .class are supported.
- Parameters:
path
- (undocumented)- Since:
- 4.0.0
-
addArtifact
Add a single artifact to the current session.Currently it supports local files with extensions .jar and .class and Apache Ivy URIs.
- Parameters:
uri
- (undocumented)- Since:
- 4.0.0
-
addArtifact
Add a single in-memory artifact to the session while preserving the directory structure specified bytarget
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
- Parameters:
bytes
- (undocumented)target
- (undocumented)- Since:
- 4.0.0
-
addArtifact
Add a single artifact to the session while preserving the directory structure specified bytarget
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
- Parameters:
source
- (undocumented)target
- (undocumented)- Since:
- 4.0.0
-
addArtifacts
Add one or more artifacts to the session.Currently it supports local files with extensions .jar and .class and Apache Ivy URIs
- Parameters:
uri
- (undocumented)- Since:
- 4.0.0
-
addArtifacts
Add one or more artifacts to the session.Currently it supports local files with extensions .jar and .class and Apache Ivy URIs
- Parameters:
uri
- (undocumented)- Since:
- 4.0.0
-
catalog
Interface through which the user may create, drop, alter or query underlying databases, tables, functions etc.- Returns:
- (undocumented)
- Since:
- 2.0.0
-
createDataFrame
public abstract <A extends scala.Product> DS createDataFrame(scala.collection.immutable.Seq<A> data, scala.reflect.api.TypeTags.TypeTag<A> evidence$1) Creates aDataFrame
from a local Seq of Product.- Parameters:
data
- (undocumented)evidence$1
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
createDataFrame
:: DeveloperApi :: Creates aDataFrame
from ajava.util.List
containingRow
s using the given schema.It is important to make sure that the structure of everyRow
of the provided List matches the provided schema. Otherwise, there will be runtime exception.- Parameters:
rows
- (undocumented)schema
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
createDataFrame
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.
- Parameters:
data
- (undocumented)beanClass
- (undocumented)- Returns:
- (undocumented)
- Since:
- 1.6.0
-
createDataset
Creates aDataset
from a local Seq of data 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
.==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| // +-------+---+
- Parameters:
data
- (undocumented)evidence$3
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
createDataset
Creates aDataset
from ajava.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());
- Parameters:
data
- (undocumented)evidence$4
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
emptyDataFrame
Returns aDataFrame
with no rows or columns.- Returns:
- (undocumented)
- Since:
- 2.0.0
-
emptyDataset
Creates a newDataset
of type T containing zero elements.- Parameters:
evidence$2
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
newSession
Start a new session with isolated SQL configurations, temporary tables, registered functions are isolated, but sharing the underlyingSparkContext
and cached data.- Returns:
- (undocumented)
- 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.
-
range
Creates aDataset
with a singleLongType
column namedid
, containing elements in a range from 0 toend
(exclusive) with step value 1.- Parameters:
end
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
range
Creates aDataset
with a singleLongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with step value 1.- Parameters:
start
- (undocumented)end
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
range
Creates aDataset
with a singleLongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with a step value.- Parameters:
start
- (undocumented)end
- (undocumented)step
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
range
Creates aDataset
with a singleLongType
column namedid
, containing elements in a range fromstart
toend
(exclusive) with a step value, with partition number specified.- Parameters:
start
- (undocumented)end
- (undocumented)step
- (undocumented)numPartitions
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
read
Returns aDataFrameReader
that can be used to read non-streaming data in as aDataFrame
.sparkSession.read.parquet("/path/to/file.parquet") sparkSession.read.schema(schema).json("/path/to/file.json")
- Returns:
- (undocumented)
- Since:
- 2.0.0
-
sql
Executes a SQL query substituting positional parameters by the given arguments, returning the result as aDataFrame
. This API eagerly runs DDL/DML commands, but not for SELECT queries.- Parameters:
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 Supported Data Types for supported value types in Scala/Java. For example, 1, "Steven", LocalDate.of(2023, 4, 2). A value can be also aColumn
of a literal or collection constructor functions such asmap()
,array()
,struct()
, in that case it is taken as is.- Returns:
- (undocumented)
- Since:
- 3.5.0
-
sql
Executes a SQL query substituting named parameters by the given arguments, returning the result as aDataFrame
. This API eagerly runs DDL/DML commands, but not for SELECT queries.- Parameters:
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 aColumn
of a literal or collection constructor functions such asmap()
,array()
,struct()
, in that case it is taken as is.- Returns:
- (undocumented)
- Since:
- 3.4.0
-
sql
Executes a SQL query substituting named parameters by the given arguments, returning the result as aDataFrame
. This API eagerly runs DDL/DML commands, but not for SELECT queries.- Parameters:
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 aColumn
of a literal or collection constructor functions such asmap()
,array()
,struct()
, in that case it is taken as is.- Returns:
- (undocumented)
- Since:
- 3.4.0
-
sql
Executes a SQL query using Spark, returning the result as aDataFrame
. This API eagerly runs DDL/DML commands, but not for SELECT queries.- Parameters:
sqlText
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.0.0
-
stop
public void stop()Synonym forclose()
.- Since:
- 2.0.0
-
table
Returns the specified table/view as aDataFrame
. 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.- Parameters:
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.- Returns:
- (undocumented)
- Since:
- 2.0.0
-
time
public <T> T time(scala.Function0<T> f) 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.- Parameters:
f
- (undocumented)- Returns:
- (undocumented)
- Since:
- 2.1.0
-
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);
- Returns:
- (undocumented)
- 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.
-
version
The version of Spark on which this application is running.- Returns:
- (undocumented)
- Since:
- 2.0.0
-