Образец свободной версии стандартного варианта для изменения типа данных enum
У меня есть перечисление Enumeratum, и мне нужно загрузить его во фрейм данных искры. Очевидно, что это не удается из-за отсутствия кодера.
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
, Как я могу спроектировать класс дела (без шаблонов) на:
- либо он работает нормально в спарк (я не хочу), чтобы иметь двоичный вывод крио
- или преобразовать его в строку с помощью
Foo.Baz.entryName
(но без кипы определения аналогичного класса) что-то вродеSeq(FooBar(1, "one", Foo.Baz), FooBar(2, "two", Foo.Bar)).map(allValluesButxxxx, xxxx.entryName)