Java 如何使用callUDF?

Java 如何使用callUDF?,java,apache-spark,Java,Apache Spark,我正在使用Spark 2.3.0并尝试使用callUDF。但是我得到一个错误,第二个参数的类型是错误的。它需要scala.collection.Seq,但col()函数返回org.apache.spark.sql.column 我见过很多人这样安全地使用callUDF(“udfName”),col(“colName”),但为什么我不能呢 public static UDF1<String,Option<Integer>>normSex = new UDF1<Stri

我正在使用Spark 2.3.0并尝试使用callUDF。但是我得到一个错误,第二个参数的类型是错误的。它需要
scala.collection.Seq
,但
col()
函数返回
org.apache.spark.sql.column

我见过很多人这样安全地使用callUDF(“udfName”),col(“colName”),但为什么我不能呢

public static UDF1<String,Option<Integer>>normSex = new UDF1<String, Option<Integer>>() {
    @Override
    public Option<Integer> call(String d) throws Exception {
        if (null == d)
            return Option.apply(null);
        else{
            if(d.equals("male"))
                return Some.apply(0);
            else
                return Some.apply(1);
        }
    }
};
当我试着这样使用它的时候

Dataset<Row> projection=df.select(callUDF("normSex",col("Sex)));
Dataset projection=df.select(callUDF(“normsecx”),col(“Sex”);
这就是我得到错误的地方:

错误:java:不兼容的类型:org.apache.spark.sql.Column无法转换为scala.collection.Seq

Dataset<Row> projection=df.select(callUDF("normSex",col("Sex)));