为什么在 scala Spark 应用程序中初始化 SQLContext 后导入隐式 SqlContext.implicits._

ash*_*thi 4 scala apache-spark

为什么在 scala Spark 应用程序中初始化 SQLContext 后导入隐式 SqlContext.implicits._ 。

当导入放在对象之外时,似乎存在问题。

我来自 java 背景,不理解 def 对象中 import 语句的用法。

val sqlContext = new SQLContext(sc)

import sqlContext.implicits._
import sqlContext._
Run Code Online (Sandbox Code Playgroud)

Yuv*_*kov 5

导入在外部不起作用,因为该implicits对象是在SQLContext内部定义的:

* :: Experimental ::
* (Scala-specific) Implicit methods available in Scala for converting
* common Scala objects into `DataFrame`s.
*
* {{{
*   val sqlContext = new SQLContext(sc)
*   import sqlContext.implicits._
* }}}
@Experimental
@InterfaceStability.Evolving
object implicits extends SQLImplicits with Serializable {
  protected override def _sqlContext: SQLContext = self
}
Run Code Online (Sandbox Code Playgroud)

因此,只有拥有 的实例后,SQLContext才能导入包含所有隐式的内部对象定义。