【发布时间】:2018-07-18 01:23:42
【问题描述】:
我有以下代码尝试从 Seq[T] 创建 DataFrame
case class CaseConvert[T: TypeTag](a: T)
def createDf[T: TypeTag](data: Seq[T]): DataFrame = {
spark.createDataFrame(data.map(CaseConvert[T])
}
当通过传递类型say Seq[java.sql.Timestamp]执行上述createDf方法时,它失败并显示以下错误
UnsupportedOperaionException:不支持 TypeTag[java.sql.Timestamp] 类型的架构
我想我必须为 CaseConvert 类创建编码器,但不确定如何使用 Scala 的复杂泛型来实现。我是 Spark 和 Scala 的新手。
【问题讨论】:
-
你为什么不干脆
spark.createDataFrame(Seq(1,2,3).map(CaseConvert.apply)),即忘记TypeTag而简单地使用CaseConvert.apply(在执行时不使用[T])?
标签: scala apache-spark apache-spark-sql apache-spark-dataset