如何创建接收多个参数的用户定义函数?

时间:2016-04-29 16:24:36

标签: scala apache-spark

首先我们创建一个数据框:

val df = sc.parallelize(Range(1, 100).map(x => (x * 1.0, x * 3.0, x * 0.7))).toDF("x1", "x2", "x3")

    df.show(3)

    //+---+---+------------------+
    //| x1| x2|                x3|
    //+---+---+------------------+
    //|1.0|3.0|               0.7|
    //|2.0|6.0|               1.4|
    //|3.0|9.0|2.0999999999999996|
    //+---+---+------------------+
    // only showing top 3 rows

使用普通的Scala函数没有问题:

def foo(cols: Double*) = cols.reduce(​_+_​)

foo(1.2, 1.3, 1.6)

//res2: Double = 4.1

虽然在使用用户定义函数时尝试:

val fooudf = udf((cols: Double*) => cols.reduce(​_+_​))

//<console>:2: error: ')' expected but identifier found.
//      val fooudf = udf((cols: Double*) => cols.reduce(​_+_​))
//                                    ^

Pd积。在python中,可以执行所请求的任务。

0 个答案:

没有答案