我正在学习 Spark 和斯卡拉。我精通java,但对scala不太了解。我正在阅读有关 spark 的教程,并遇到了以下代码行,尚未解释:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
(
sc
是 SparkContext 实例)我知道 scala 隐式背后的概念(至少我想我知道)。有人可以向我解释
import
的确切含义吗?上面的说法?什么implicits
绑定(bind)到 sqlContext
实例何时实例化以及如何实例化?这些隐式是否在 SQLContext 类中定义?编辑
以下似乎也适用于我(新代码):
val sqlc = new SQLContext(sc)
import sqlContext.implicits._
在上面的这段代码中。 sqlContext 到底是什么,它在哪里定义?
最佳答案
来自 ScalaDoc :sqlContext.implicits
包含“(Scala-specific)在 Scala 中用于将常见 Scala 对象转换为 DataFrames 的隐式方法。”
并且在 Spark programming guide 中也有解释。 :
// this is used to implicitly convert an RDD to a DataFrame.
import sqlContext.implicits._
例如下面的代码
.toDF()
除非您将导入 sqlContext.implicits
,否则将无法使用:val airports = sc.makeRDD(Source.fromFile(airportsPath).getLines().drop(1).toSeq, 1)
.map(s => s.replaceAll("\"", "").split(","))
.map(a => Airport(a(0), a(1), a(2), a(3), a(4), a(5), a(6)))
.toDF()
What implicits are bound to the sqlContext instance when it is instantiated and how? Are these implicits defined inside the SQLContext class?
是的,它们在对象
implicits
中定义里面 SqlContext
类,扩展 SQLImplicits.scala .看起来那里定义了两种类型的隐式转换:rdd.toDf()
. 关于scala - SQLContext 隐式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35885702/