admin管理员组

文章数量:1194000

Is it possible to set field on the UDF instance in driver and use it by the executors when call() is invoked?

public class SomeUDF implements UDF2<String, String, String> {
    private String val = "foo";

    public void init(String st){
        val = st;
    }
    @Override
    public String call(String a, String b) {
        return val;
    }
}

py spark:

jvm_udf = spark._jvm.example.demo.SomeUDF()
jvm_udf.init("bla")

spark.udf.registerJavaFunction("foo", jvm_udf.getClass().getName(), T.StringType())
df_single_row.withColumn("val", expr(f"foo('a','b')"))

output is:

"foo"

I want:

"bla"

本文标签: Set field of java UDF instance in spark driver and use in executorsStack Overflow