在spark sql dataframe(UDAF)上的自定义案例类上实现sum聚合器

时间:2015-07-13 21:55:24

标签: scala apache-spark dataframe apache-spark-sql

我有一个案例类

__init__

现在,如果我写

case class Vec(var a: Int, var b: Int) {
    def +(v: Vec): Vec = {
        a += v.a
        b += v.b
        this
    }
}

我得到与每个val rDistDS: RDD[(Int, Vec)] = ... val sums: RDD[(Int, Vec)] = rDistDS.reduceByKey(_+_) 键关联的所有向量的总和。优异。

但是,我希望使用Int执行此操作,以帮助查询规划器并使代码更具可读性。

我希望能够做到以下

DataFrame

有没有办法在我的自定义val df: DataFrame = ... // each row has Row(theInt: Int, vec: Vec) df.groupBy(df("theInt")).agg(sum(df("vec"))) 上实现此sum聚合器,以便与上面模拟的Spark SQL Dataframe一起使用?

目前我得到了

case class

1 个答案:

答案 0 :(得分:2)