Spark 2.0缺少火花暗示

The*_*0s3 29 scala apache-spark spark-dataframe

使用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"
)
Run Code Online (Sandbox Code Playgroud)

mar*_*ios 72

没有包裹叫spark.implicits.

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

import spark.implicits._
Run Code Online (Sandbox Code Playgroud)

如果您已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._
Run Code Online (Sandbox Code Playgroud)

  • 您可以从数据集中获取会话。您将其存储在一个val中,然后使用val进行导入。 (2认同)

Chi*_*rma 8

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

val ss = SparkSession
  .builder()
  .appName("test")
  .master("local[2]")
  .getOrCreate()
Run Code Online (Sandbox Code Playgroud)

正确的导入implicits方式是

import ss.implicits._
Run Code Online (Sandbox Code Playgroud)

让我知道是否有帮助。干杯。

  • 如果你有一个 Rdd[row],你可以做 spark.createDataFrame(rdd) (2认同)