Scala 集合的数据集编码器

Posted

技术标签:

【中文标题】Scala 集合的数据集编码器【英文标题】:Dataset encoder for scala collections 【发布时间】:2017-07-11 13:29:18 【问题描述】:

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

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]

【问题讨论】:

可以添加你试过的代码吗? 隐含在范围内吗? 看我上面的代码 ***.com/questions/45020230/… 【参考方案1】:

从列表更改,设置 -> 序列

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

【讨论】:

以上是关于Scala 集合的数据集编码器的主要内容,如果未能解决你的问题,请参考以下文章

如何为 scala Iterable、spark 数据集制作编码器

Spark 数据集:示例:无法生成编码器问题

带有案例类的抽象类的scala circe编码器/解码器

使用 UDF 及其性能的 Spark Scala 数据集验证

变分自编码器(Variational Autoencoder, VAE)通俗教程

scala 数据结构(七 ):集 Set