java,如何在spark 1.4.1中调用UDF

java, how to call UDF in spark 1.4.1

在spark 1.4.1中,callUdf方法的参数为

(String udfName, scala.collection.Seq<Column> cols)

没有像1.5.1中的方法那样直接作用于列的方法

callUDF(String udfName, Column col)

那么在1.4.1中如何调用UDF呢?或者如何将列类型更改为

scala.collection.Seq<Column>

例如,这些代码适用于 1.6.1

sqlContext.udf().register("stringToLong", new UDF1<String, Long>() {

    @Override
    public Long call(String arg0) throws Exception {
        // TODO Auto-generated method stub
        IPTypeConvert itc = new IPTypeConvert();
        return itc.stringtoLong(arg0);
    }
}, DataTypes.LongType);
DataFrame interDF = initInterDF.withColumn("interIPInt", callUDF("stringToLong", initInterDF.col("interIP")));

我应该如何更改代码以便它们可以在 spark 1.4.1 中工作?

您可以将列表转换为 Seq[列]:

import scala.collection.JavaConversions;
import scala.collection.Seq;

import static java.util.Arrays.asList;

DataFrame interDF = initInterDF.withColumn("interIPInt", 
    callUDF("stringToLong", JavaConversions.asScalaBuffer(asList(initInterDF.col("interIP")))));   

问题中查看更多信息