Следующий пример кода пытается помещать некоторые объекты case в фреймворк данных. Код включает определение иерархии объекта case и класс case с использованием этого признака:
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.sql.SQLContext
sealed trait Some
case object AType extends Some
case object BType extends Some
case class Data( name : String, t: Some)
object Example {
def main(args: Array[String]) : Unit = {
val conf = new SparkConf()
.setAppName( "Example" )
.setMaster( "local[*]")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
val df = sc.parallelize( Seq( Data( "a", AType), Data( "b", BType) ), 4).toDF()
df.show()
}
}
При выполнении кода я, к сожалению, сталкиваюсь со следующим исключением:
java.lang.UnsupportedOperationException: Schema for type Some is not supported
Вопросы
- Есть ли возможность добавить или определить схему для определенных типов (здесь введите
Some
)? - Существует ли другой подход для представления такого рода перечислений?
- Я пытался использовать
Enumeration
напрямую, но также безуспешно. (см. ниже).
- Я пытался использовать
Код для Enumeration
:
object Some extends Enumeration {
type Some = Value
val AType, BType = Value
}
Спасибо заранее. Я надеюсь, что лучший подход - не использовать строки вместо этого.