Scala Sparkを使用すると、集計された列を丸めるために型付きのDataset APIを使用するにはどうすればよいですか?Spark Datasetで列を丸める方法はありますか?
また、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))
}
- 私は
round(avg(_.c1))
でavg(_.c1)
を交換する場合、私は型エラーを取得します。値を丸める正しい方法は何ですか? .map(...)
ラインが気に入らない - データセットのタイプを保持するためのよりエレガントな方法がありますか?
ありがとう! agg
タイプTypedColumn[IN, OUT]
の集計関数を期待し、ラウンドがColumn
(データフレームで使用するのに適した)を提供するためround
を使用