Spark 2.0 缺少 spark 隐式

Spark 2.0 missing spark implicits

使用 Spark 2.0,我发现可以将行的数据帧转换为案例 类 的数据帧。当我尝试这样做时,我收到一条消息,说明要导入 spark.implicits._。我遇到的问题是 Intellij 没有将其识别为有效的导入语句,我想知道它是否已经移动并且消息没有更新,或者我的构建设置中是否没有正确的包,在这里是我的 build.sbt

libraryDependencies ++= Seq(
  "org.mongodb.spark" % "mongo-spark-connector_2.11" % "2.0.0-rc0",
  "org.apache.spark" % "spark-core_2.11" % "2.0.0",
  "org.apache.spark" % "spark-sql_2.11" % "2.0.0"
)

没有名为 spark.implicits 的包。

这里的spark是指SparkSession。如果您在 REPL 中,会话已定义为 spark,因此您只需键入:

import spark.implicits._

如果您在代码中的某处定义了自己的 SparkSession,请相应地进行调整:

val mySpark = SparkSession
  .builder()
  .appName("Spark SQL basic example")
  .config("spark.some.config.option", "some-value")
  .getOrCreate()

// For implicit conversions like converting RDDs to DataFrames
import mySpark.implicits._

Spark 使用了 SparkSession 的 spark 标识符。这就是造成混乱的原因。如果你用类似的东西创建它,

val ss = SparkSession
  .builder()
  .appName("test")
  .master("local[2]")
  .getOrCreate()

导入 implicits 的正确方法是,

import ss.implicits._

如果这有帮助,请告诉我。干杯。