加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – SQLContext暗示

发布时间:2020-12-16 10:00:39 所属栏目:安全 来源:网络整理
导读:我正在学习火花和斯卡拉.我精通 java,但不是scala.我正在阅读关于spark的教程,并遇到了以下代码行,但尚未解释: val sqlContext = new org.apache.spark.sql.SQLContext(sc)import sqlContext.implicits._ (sc是SparkContext实例) 我知道scala implicits背后
我正在学习火花和斯卡拉.我精通 java,但不是scala.我正在阅读关于spark的教程,并遇到了以下代码行,但尚未解释:

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._

(sc是SparkContext实例)

我知道scala implicits背后的概念(至少我想我知道).有人可以向我解释上面的import语句究竟是什么意思吗?在实例化sqlContext实例时,哪些含义绑定到sqlContext实例?这些隐含是否在SQLContext类中定义?

编辑
以下似乎也适用于我(新代码):

val sqlc = new SQLContext(sc)
import sqlContext.implicits._

在上面的代码中.究竟什么是sqlContext,它在哪里定义?

解决方法

从 ScalaDoc开始:
sqlContext.implicits包含Scala中可用的“(Scala特定的)隐式方法,用于将常见的Scala对象转换为DataFrame.”

并在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?

是的,它们是在SqlContext类中的对象含义中定义的,它扩展了SQLImplicits.scala.它看起来在那里定义了两种类型的隐式转换:

> RDD到DataFrameHolder转换,它允许使用上面提到的rdd.toDf().
> Encoder的各种实例,“用于将类型T的JVM对象转换为内部Spark SQL表示形式.”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读