如何在Spark SQL中为自定义类型定义架构?

下面的示例代码尝试将一些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

问题

是否可以为某些类型(此处为type Some)添加或定义模式?

是否存在另一种方法来代表这种枚举?

我试图Enumeration直接使用,但也没有成功。(见下文)

的代码Enumeration:


object Some extends Enumeration {

  type Some = Value

  val AType, BType = Value

}

提前致谢。我希望最好的方法是不要使用字符串。


阿波罗的战车
浏览 437回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL