用spark.implicits._导入什么?

时间:2018-06-15 15:04:19

标签: apache-spark

使用import spark.implicits._导入的内容是什么? “暗示”是指某些包裹吗?如果是这样,为什么我在https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.package上的Scala Api文档中找不到它?

2 个答案:

答案 0 :(得分:3)

Scala允许您动态导入"#34;事情进入范围。你也可以这样做:

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语句导入的一些含义。您获得的最重要的事情是EncoderDataFrame上的大量操作所需的Dataset。它还为您使用StringContext表示法所需的$"column_name"范围。

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

答案 1 :(得分:0)

通过对象导入是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 类型的对象,功能被隐式导入。