使用import spark.implicits._
导入的内容是什么? “暗示”是指某些包裹吗?如果是这样,为什么我在https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.package上的Scala Api文档中找不到它?
答案 0 :(得分:3)
Scala允许您动态导入"#34;事情进入范围。你也可以这样做:
final case class Greeting(hi: String)
def greet(greeting: Greeting): Unit = {
import greeting._ // everything in greeting is now available in scope
println(hi)
}
SparkSession
实例带有您在范围内使用import
语句导入的一些含义。您获得的最重要的事情是Encoder
和DataFrame
上的大量操作所需的Dataset
。它还为您使用StringContext
表示法所需的$"column_name"
范围。
implicits
成员是SQLImplicits
的一个实例,其源代码(适用于版本2.3.1)可以查看here。
答案 1 :(得分:0)
通过对象导入是scala的特性,所以api文档并没有描述。从 Apache spark 源代码来看,implicits
是 SparkSession
类中的一个对象类。 implicits
类扩展了 SQLImplicits
如下:
object implicits extends org.apache.spark.sql.SQLImplicits with scala.Serializable
。 SQLImplicits
提供了更多功能,例如:
通过导入 implicits
到 import spark.implicits._
,其中 spark
是 SparkSession
类型的对象,功能被隐式导入。