我正在学习火花和scala。我精通java,但不太懂scala。我正在学习一个关于火花的教程,遇到了下面一行代码,它还没有被解释:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
(sc
是SparkContext实例)
我知道scala隐含背后的概念(至少我想我知道)。有人能给我解释一下上面import
语句的确切含义吗?实例化时,什么隐含
绑定到sqlContext
实例以及如何绑定?这些隐含是在SQLContext类中定义的吗?
编辑以下似乎也适用于我(新代码):
val sqlc = new SQLContext(sc)
import sqlContext.implicits._
在上面的这段代码中。sqlContext到底是什么,它在哪里定义的?
来自ScalaDoc:sqlContext. implicits
包含“(Scala特定)Scala中可用的隐式方法,用于将常见Scala对象转换为DataFrames。”
并且在Spark编程指南中也进行了解释:
// 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()
实例化sqlContext实例时绑定了哪些隐含以及如何绑定?这些隐含是在SQLContext类中定义的吗?
是的,它们是在SqlContext
类中的objectimplicits
中定义的,该类扩展了SQLImpuits. scala。看起来那里定义了两种类型的隐式转换:
rdd. toDf()
。