代码:
val dfArr = df.map(row => {
...
...
val DF = spark.createDataFrame(rdd, schema)
DF // 返回 dataframe
})
报错:
error: Unable to find encoder for type org.apache.spark.sql.DataFrame. An implicit Encoder[org.apache.spark.sql.DataFrame] is needed to store org.apache.spark.sql.DataFrame instances in a Dataset. Primitive types (Int, String, etc) and Product types (case classes) are supported by importing spark.implicits._ Support for serializing other types will be added in future releases.
将 df.take(n)到 driver 不会报错,不 take 的话报错,原因应该是序列化的时候没找合适的 encoder ,奇怪的是我在创建 df 的时候已经给了 schema.