gpt4 book ai didi

scala - SQLContext 隐式

转载 作者:行者123 更新时间:2023-12-01 13:24:24 25 4
gpt4 key购买 nike

我正在学习 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 到 DataFrameHolder 的转换,可以使用上面提到的 rdd.toDf() .
  • Encoder 的各种实例它们是“用于将 T 类型的 JVM 对象与内部 Spark SQL 表示形式相互转换。”
  • 关于scala - SQLContext 隐式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35885702/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com