【发布时间】:2017-07-31 15:29:45
【问题描述】:
上下文
我创建了一个函数,它接受 Dataset[MyCaseClass] 并返回其中一列的元素数组
def columnToArray(ds: Dataset[MyCaseClass], columnName: String): Array[String] = {
ds
.select(columnName)
.rdd
.map(row => row(0).toString)
.collect
}
它适用于案例类
case class MyCaseClass(
fieldA: String,
fieldB: String,
fieldC: String
)
问题
我需要使用其他类型的Dataset 重用该功能。为了概括,我将Dataset 的类型声明为AnyRef,但是当我将它与上述案例类一起使用时,出现以下错误
类型不匹配;找到:org.apache.spark.sql.Dataset[com.my.package.MyCaseClass] 需要:org.apache.spark.sql.Dataset[AnyRef] 注意:com.my.package.MyCaseClass <: anyref t>
我认为错误中提到的T 类型是Dataset 的类型,所以我无法更改它的方差。有没有其他方法可以概括这个函数?
【问题讨论】:
标签: scala apache-spark apache-spark-dataset