使用Scala Spark,如何使用类型化的数据集API舍入聚合列?
另外,如何通过groupby操作保留数据集的类型?
这是我目前拥有的:
case class MyRow(
k1: String,
k2: String,
c1: Double,
c2: Double
)
def groupTyped(ds: Dataset[MyRow]): Dataset[MyRow] = {
import org.apache.spark.sql.expressions.scalalang.typed._
ds.groupByKey(row => (row.k1, row.k2))
.agg(
avg(_.c1),
avg(_.c2)
)
.map(r => MyRow(r._1._1, r._1._2, r._2, r._3))
}
Run Code Online (Sandbox Code Playgroud)
avg(_.c1),则会round(avg(_.c1))出现类型错误。四舍五入的正确方法是什么?.map(...)行感觉不对-有没有更优雅的方法来保留我的数据集的类型?谢谢!