没有Encoder[Row]类型的隐式参数



我一直在努力学习如何在scala中使用map函数。但是,我一直得到错误No implicit arguments of type Encoder[Row]。如何在不必创建定义json建模方式的类的情况下修复此错误?

val spark = SparkSession.builder
.appName("SparkSQL")
.master("local[*]")
.getOrCreate()
val df = spark.read.json("src/main/scala/data.json")
val df2 = df.map(r => r)
df2.printSchema()

如果您有RowEncoder的架构,您可以为Row定义一个自定义Encoder,并且由于r没有更改,您可以安全地使用源DataFramedf的架构,而无需在编译时知道该架构。

您也可以使用源DataFrame的编码器,它也应该是安全的。

import org.apache.spark.sql.catalyst.encoders.RowEncoder
val df2 = df.map(r => r)(RowEncoder(df.schema))
val df3 = df.map(r => r)(df.encoder)

相关内容

最新更新