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
()はありませんか?私は何をすべきか?
ありがとうございました。