0

在火花1.4.1,callUdf方法的参数是java中,如何调用UDF在火花1.4.1

(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"))); 

工作,我应该如何改变代码,使他们能够在火花1.4.1工作?

回答

1

您可以列表转换序列[专栏]:

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"))))); 

见多this问题

+0

原谅我,我是菜鸟。非常感谢你! – volity

+0

@volity放松:)我很高兴我帮你:) –