我正在尝试转换一个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.
错误:(243, 29)重载方法值json,有替代方法。 (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 (路径:String*)org.apache.spark.sql.DataFrame (路径:String*)org.apache.spark.sql.DataFrame (路径:String*)org. org.apache.spark.sql.DataFrame (path: String)org.apache.spark.sql.DataFrame不能应用于(org.apache.spark.sql.Dataset[String]) var df = spark.read.json(Seq(jsonStr).toDS)
注: 我在用SBT构建的时候没有得到这个错误。
以下方法是在Spark 2.2.0中引入的。
def json(jsonDataset: Dataset[String]): DataFrame =
请修改maven的pom.xml文件中的Spark版本。
将你的代码改为
val rdd = sc.parallelize(Seq(jsonStr))
var json_df = spark.read.json(rdd)
var df = json_df.toDS
(或将其合并到一个变量中,由你决定)。
你正试图通过 Dataset
变成 spark.read.json
函数,因此出现错误。