如何从包含Enums的案例类创建Spark Dataframe

时间:2016-09-28 11:54:57

标签: scala apache-spark apache-spark-sql

这与How to create Spark Dataset or Dataframe from case classes that contains Enums不同。在这个问题中,我想知道如何创建Dataframe,而不是DataSet。

我一直在尝试使用包含枚举的案例类创建Spark Dataframe,但我无法做到。我正在使用Spark版本1.6.0。例外是抱怨我的Enum不支持该架构。这在Spark中是不可能的,在数据​​中创建枚举并创建数据帧?

代码:

import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}

object MyEnum extends Enumeration {
  type MyEnum = Value
  val Hello, World = Value
}

case class MyData(field: String, other: MyEnum.Value)

object EnumTest {

  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName("test").setMaster("local[*]")
    val sc = new SparkContext(sparkConf)
    val sqlCtx = new SQLContext(sc)

    import sqlCtx.implicits._

    val df = sc.parallelize(Array(MyData("hello", MyEnum.World))).toDF()

    println(s"df: ${df.collect().mkString(",")}}")
  }

}

例外:

线程“main”中的异常java.lang.UnsupportedOperationException:不支持类型为com.nordea.gpdw.dq.MyEnum.Value的模式

0 个答案:

没有答案