5

我有一个 Enumeratum 枚举,需要将其加载到 spark 数据框中。显然,由于缺少编码器,这会失败。

import enumeratum._
sealed trait Foo extends EnumEntry

object Foo extends Enum[Foo] {

  val values = findValues

  case object Baz extends Foo
  case object Bar extends Foo
}
case class FooBar(a:Int, lotOfOthterFields:String, xxxx:Seq[Foo])
Seq(FooBar(1, "one", Foo.Baz), FooBar(2, "two", Foo.Bar)).toDF

失败No Encoder found for type Foo。如何将案例类(没有样板)投影到:

  • 要么让它在 spark 中正常工作(我)想要二进制 kryo 输出
  • 或通过以下方式将其转换为字符串Foo.Baz.entryName(但没有定义类似的类)Seq(FooBar(1, "one", Foo.Baz), FooBar(2, "two", Foo.Bar)).map(allValluesButxxxx, xxxx.entryName)
4

0 回答 0