2017-01-19 6 views
0

私は使用する異なるUDFを定義できるので、APIのセットを持っています。以下のような:どのようにJavaコードレジスタなしパラメータUDFとSpark

私はJavaでScalaの文字列TypeTag(位置???、三番目のパラメータ)を取得できますか

import scala.Function0; 
 
class UDF0 { 
 
\t private String targetField; 
 
\t private Function0 function0; 
 
} 
 

 
import scala.runtime.AbstractFunction0; 
 
udf0.setFunction0(new AbstractFunction0<String>() { 
 
\t \t @Override 
 
\t \t public String apply() { 
 
\t \t \t return "IA"; 
 
\t \t } 
 
\t }) 
 

 
class UDF0Parser implement Parser<UDF0> { 
 
\t public void parse(UDF0 udf0) { 
 
\t \t String udfName = "udf0"; 
 
\t \t getSparkSession().udf().register(udfName,()-> udf0.getFunction0().apply(), ???); 
 
\t \t Column col = functions.callUDF(udfName); 
 
\t \t getDateSet().withColumn("newCol", col); 
 
\t } 
 
}

  • Question1

私はScalaの使用UDF0Parserを書くために回す:

class UDF0Parser implement Parser<UDF0> { 
 
\t def parse(udf0: UDF0): Unit = { 
 
\t \t val udfName = "udf0" 
 
\t \t getSparkSession.udf.register(udfName, udf0.getFunction0) 
 
\t \t val col = functions.callUDF(udfName) 
 
\t \t getDateSet.withColumn("new", col) 
 
\t } 
 
}

をしかし、私はランタイムエラーました:

Error:(14, 65) type mismatch; 
 
found : Function0 
 
required:() => ? 
 
    stepContext.getSparkSession.udf.register(udfName, transform.getFunction0); 
 
                   ^

    012 Function0の> XXXだけインスタンス -
  • Question2

()はありませんか?私は何をすべきか?

ありがとうございました。

答えて

関連する問題