没有类型编码器[行]的隐式参数
No implicit arguments of type Encoder[Row]
我一直在努力学习如何在 Scala 中使用地图功能。但是,我不断收到错误 No implicit arguments of type Encoder[Row]
。如何在不必创建定义 json 建模方式的 class 的情况下修复此错误?
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
没有更改,您可以安全地使用来自source DataFrame
df
在编译时不需要知道架构。
您也可以使用来自源代码的编码器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)
我一直在努力学习如何在 Scala 中使用地图功能。但是,我不断收到错误 No implicit arguments of type Encoder[Row]
。如何在不必创建定义 json 建模方式的 class 的情况下修复此错误?
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
没有更改,您可以安全地使用来自source DataFrame
df
在编译时不需要知道架构。
您也可以使用来自源代码的编码器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)