小编mar*_*ius的帖子

如何在Spark数据集中的列取整?

使用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)
  1. 如果我将替换为avg(_.c1),则会round(avg(_.c1))出现类型错误。四舍五入的正确方法是什么?
  2. .map(...)行感觉不对-有没有更优雅的方法来保留我的数据集的类型?

谢谢!

scala apache-spark apache-spark-sql apache-spark-dataset

3
推荐指数
2
解决办法
3837
查看次数