为什么我不能使用callUDF方法?

时间:2016-11-27 15:30:57

标签: java apache-spark dataframe

我使用spark 1.6.1和java中的代码。当我使用callUDF()时,它显示

The method callUDF(String, Column) is undefined for the type PhaseOne

并且callUdf()不起作用。我的代码如下:

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 个答案:

答案 0 :(得分:3)

您必须在开头添加:

import static org.apache.spark.sql.functions.callUDF;

然后使用它:

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