用于scala集合的数据集编码器

时间:2017-07-11 13:29:18

标签: apache-spark apache-spark-dataset apache-spark-encoders

尝试从s3读取数据集时出现异常。公司案例类包含带有Employee case classe的集合。

Exception in thread "main" java.lang.UnsupportedOperationException: No Encoder found for Set[com.model.company.common.Employee]
- field (class: "scala.collection.immutable.Set", name: "employees")
- field (class: "com.model.company.Company", name: "company")

我试过kryo:

implicit def myDataEncoder[T]: Encoder[Set[Employee]] = Encoders.kryo[scala.collection.immutable.Set[Employee]

但它也不起作用。 你知道如何将scala集合转换为数据集吗?

代码:

val sqlContext = sparkSession.sqlContext
import sqlContext.implicits._

val records = sparkSession.read.json(s"s3a://${config.input.fullPath}").as[Company]

1 个答案:

答案 0 :(得分:0)

从列表中更改,设置 - > SEQ

您可以在此处找到有关数据集数据类型的更多信息: https://spark.apache.org/docs/latest/sql-programming-guide.html#data-types