What is imported with import spark.implicits._
? Does "implicits" refer to some package? If so, why could I not find it in the Scala Api documentation on https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.package?
Scala allows you to import "dynamically" things into scope. You can also do something like that:
final case class Greeting(hi: String)
def greet(greeting: Greeting): Unit = {
import greeting._ // everything in greeting is now available in scope
println(hi)
}
The SparkSession
instance carries along some implicits that you import in your scope with that import
statement. The most important thing that you get are the Encoder
s necessary for a lot of operations on DataFrame
s and Dataset
s. It also brings into the scope the StringContext
necessary for you to use the $"column_name"
notation.
The implicits
member is an instance of SQLImplicits
, whose source code (for version 2.3.1) you can view here.
It's scala's feature to import through object, so the api documentation did not describe about it. From Apache spark source code, implicits
is an object class inside SparkSession
class. The implicits
class has extended the SQLImplicits
like this :
object implicits extends org.apache.spark.sql.SQLImplicits with scala.Serializable
. The SQLImplicits
provides some more functionalities like:
By importing implicits
through import spark.implicits._
where spark
is a SparkSession
type object, the functionalities are imported implicitly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With