【问题标题】:What is imported with spark.implicits._?spark.implicits._ 导入了什么?
【发布时间】:2018-06-15 15:04:18
【问题描述】:

import spark.implicits._ 导入了什么? “隐含”是指某个包吗?如果是这样,为什么我在 https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.package 的 Scala Api 文档中找不到它?

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    Scala 允许您将“动态”的东西导入作用域。你也可以这样做:

    final case class Greeting(hi: String)
    
    def greet(greeting: Greeting): Unit = {
      import greeting._ // everything in greeting is now available in scope
      println(hi)
    }
    

    SparkSession 实例带有一些隐含,您可以使用 import 语句在您的作用域中导入这些隐含。你得到的最重要的东西是Encoders 对DataFrames 和Datasets 的许多操作所必需的。它还将StringContext 带入了您使用$"column_name" 表示法所必需的范围内。

    implicits 成员是SQLImplicits 的一个实例,其源代码(适用于2.3.1 版本)您可以查看here

    【讨论】:

      【解决方案2】:

      通过对象导入是scala的特性,所以api文档没有描述。从 Apache spark 源代码来看,implicitsSparkSession 类中的一个对象类。 implicits 类扩展了 SQLImplicits,如下所示: object implicits extends org.apache.spark.sql.SQLImplicits with scala.SerializableSQLImplicits 提供了更多功能,例如:

      1. 将 Scala 对象转换为数据集。 (由 toDS)
      2. 将 scala 对象转换为数据框。 (由 toDF 提供)
      3. 将“$name”转换为列。

      通过导入implicitsimport spark.implicits._,其中sparkSparkSession 类型的对象,功能被隐式导入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-29
        • 1970-01-01
        • 2020-08-27
        • 2021-11-23
        相关资源
        最近更新 更多