这与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的模式