如何实现通用编码器?

How to implement a generic encoder?

我想实现一个通用编码器,因为我在 Spark 1.6 上有一个小项目,当我将它迁移到 spark 2.0 时,它给我警告和错误

Unable to find encoder for type stored 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.

在很多地方因此我想实现一个通用编码器并将其放在包对象中。我只想知道如何在 spark 2.0 中实现通用编码器?

开发自定义编码器通常从 org.apache.spark.sql.Encoders 对象组合现有编码器开始。

请注意,Spark 中的许多地方都会检查正在使用的编码器是否是 ExpressionEncoder (i.e. SparkSession.createDataset) 的实例,因此您可能需要查看表达式编码器作为自定义开发的基础。