总结MADlib UDF Spark SQL

时间:2016-03-21 17:21:04

标签: scala apache-spark user-defined-functions apache-spark-sql

我对如何做到这一点有点失落。我正在实现sum函数MADlib。此函数采用任意数量的数组并添加:

sum ( array [ 1,2] , array [2,3 ] , array [4,5 ] )
Return : [7,10]

我想从下一个语句创建一个函数返回相同的结果,但不是如何实现这样的东西:

 def sum[T](args: WrappedArray[T]*)(implicit n: Numeric[T]) = {
     var i : Int = 0;
     for( arg <- args ){
         // Code
         i = i + 1;
     }
  }

 sqlContext.udf.register("sum", sum(_:WrappedArray[Int]*))
 sqlContext.sql("SELECT sum(collect_list(a),collect_list(b),collect_list(c)) from df").show

1 个答案:

答案 0 :(得分:1)

def sum[T](args: WrappedArray[T]*)(implicit n: Numeric[T]) = {
  args.transpose.map(_.sum)
}

sum(Array(1, 2), Array(2, 3), Array(4, 5)) // ArrayBuffer(7, 10)