重载方法值 json 与备选方案:(jsonRDD: org.apache.spark.rdd.RDD[String]) 在 IntelliJ 中使用 Spark

Overloaded method value json with alternatives: (jsonRDD: org.apache.spark.rdd.RDD[String]) using Spark in IntelliJ

我正在尝试将 JSON 字符串 jsonStr 转换为 Scala 中的 Spark Dataframe。为此目的使用 InteliJ。

val spark = SparkSession.builder().appName("SparkExample").master("local[*]").getOrCreate()
val sc = spark.sparkContext
import spark.implicits._
var df = spark.read.json(Seq(jsonStr).toDS)
df.show()

使用 Maven 编译/构建项目时出现以下错误。

Error:(243, 29) overloaded method value json with alternatives: (jsonRDD: org.apache.spark.rdd.RDD[String])org.apache.spark.sql.DataFrame (jsonRDD: org.apache.spark.api.java.JavaRDD[String])org.apache.spark.sql.DataFrame (paths: String*)org.apache.spark.sql.DataFrame (path: String)org.apache.spark.sql.DataFrame cannot be applied to (org.apache.spark.sql.Dataset[String]) var df = spark.read.json(Seq(jsonStr).toDS)

注意:我在使用 SBT 构建时没有遇到错误。

将您的代码更改为

val rdd = sc.parallelize(Seq(jsonStr))
var json_df = spark.read.json(rdd)
var df = json_df.toDS

(或组合成一个变量,由你决定) .

您试图将 Dataset 传递给 spark.read.json 函数,因此出现错误。

Spark 2.2.0 中引入了以下方法

def json(jsonDataset: Dataset[String]): DataFrame =

请更正您在 Maven 的 pom.xml 文件中的 Spark 版本