【发布时间】:2015-12-03 02:45:59
【问题描述】:
以下示例代码尝试将一些案例对象放入数据框中。代码包括使用此 trait 的案例对象层次结构和案例类的定义:
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
}
提前致谢。我希望,最好的方法是不要使用字符串。
【问题讨论】:
标签: scala apache-spark apache-spark-sql case-class