2016-09-28 47 views
0

任何请帮助知道如何将非数据框值作为参数传递给udf。如何将非数据框参数传递给udf火花

val df2 = df1.withColumn("newcol", udffunc(df1("col1"), x)). 

udf函数我定义如下。

udffunc = udf(method _) 

方法一定义如下。

def method(inputvar1: String, inputvar2: String): Option[Long] = { 
    ... 
    ... 
    return Longvariable 
} 
+0

编译错误。它不允许将参数x作为参数传递。任何人都可以帮忙。 – Ramesh

+0

在sbt控制台中,你可以运行':type udffunc'吗? – Reactormonk

+0

@Reactormonk:我没有得到你的问题 – Ramesh

回答

1

我能够通过为UDF编写下面的代码来解决问题。

def udffunc = udf((y:String) => { 
    val format:String = "x" 
    method(y, "x") 
    }) 

所以与此,我能够从.withColumn通过一个参数(数据帧列)给UDF功能udffunc然后是能够通过其为“×”,在上面的例子中的功能的外部参数命名为“方法”。

+0

我建议尽可能使用'val'而不是'var'。不可变的代码是健壮的代码。 – Reactormonk

+0

嗨,使用lit函数我可以传递来自withColumn的非数据帧参数。这是代码。 val df2 = df1.withColumn(df1(“col1”),lit(x)) – Ramesh