Scala SQLContext隐式
我正在学习spark和scala。我精通java,但对scala不太熟悉。我正在阅读有关spark的教程,遇到了以下代码行,但尚未解释:Scala SQLContext隐式,scala,apache-spark,Scala,Apache Spark,我正在学习spark和scala。我精通java,但对scala不太熟悉。我正在阅读有关spark的教程,遇到了以下代码行,但尚未解释: val sqlContext = new org.apache.spark.sql.SQLContext(sc) import sqlContext.implicits._ (sc是SparkContext实例) 我知道scala隐含的概念(至少我想我知道)。有人能给我解释一下上面的import语句的确切含义吗?当实例被实例化时,什么隐式绑定到sqlCont
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
(sc
是SparkContext实例)
我知道scala隐含的概念(至少我想我知道)。有人能给我解释一下上面的import
语句的确切含义吗?当实例被实例化时,什么隐式
绑定到sqlContext
实例,以及如何绑定?这些隐式定义是否在SQLContext类中
编辑
以下内容似乎也适用于我(新代码):
在上面的代码中。sqlContext到底是什么?它是在哪里定义的?来自:
sqlContext.implicits
包含Scala中用于将常见Scala对象转换为数据帧的“(特定于Scala的)隐式方法
并在以下章节中进行了说明:
例如,在下面的代码中,.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类中
是的,它们是在对象implicits
内部SqlContext
类中定义的,该类扩展了。看起来这里定义了两种类型的隐式转换:
RDD.toDf()
是的,但是
sqlContext
是预定义的吗??我刚刚创建了一个上面类sqlContext
的对象sqlContext
。预定义的sqlContext是什么意思?Spark API中已经定义了sqlContext
的一个版本,它与上面定义的sqlContext
不同吗?当然,还有HiveContext,它扩展了SqlContext。如果你说的是实际的实例,那么不,没有其他实例,你必须创建自己的实例。我知道了。SQL上下文在spark shell中作为sqlContext提供。就像SparkContext实例可以作为sc使用一样
// this is used to implicitly convert an RDD to a DataFrame.
import 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()