在UDFRegistration.register()中指定returnType:DataType

时间:2019-06-03 14:16:17

标签: scala apache-spark

Scala API表示register(..)接受returnType。但是,当我进行编译时,出现以下错误。

val spark = SparkSession
    .builder()
    .config("spark.master", "local[*]")
    .config("spark.serializer", classOf[KryoSerializer].getName)
    .getOrCreate()

  spark.udf.register("doIt", do_it_func, ArrayType(StructType(Seq(
    StructField("V1", DoubleType),
    StructField("V2", DoubleType),
    StructField("V3", DoubleType)))))

  def do_it_func: String => Seq[(Option[Double], Option[Double], Option[Double])] = {
    (s, r1, r2) => Seq((None, None, None))
  }
error: overloaded method value register with 
alternatives:[ERROR]   (name: String,f: 
org.apache.spark.sql.api.java.UDF22[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _, _, _, _, _, _, _, _],returnType: 
org.apache.spark.sql.types.DataType)Unit [ERROR]   (name: String,f: 
org.apache.spark.sql.api.java.UDF21[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _, _, _, _, _, _, _],returnType: 
org.apache.spark.sql.types.DataType)Unit 

为什么我不能传递returnType?

谢谢, 久南

0 个答案:

没有答案