我正在尝试执行以下代码:-
Script script = new GroovyShell().parse(code);
UDF3 rulesExecutingUDF = (UDF3<Double, String, String, String>) (val1, val2, val3) -> {
Binding binding=new Binding();
binding.setVariable("val1",val1);
binding.setVariable("val2", val2);
binding.setVariable("val3", val3);
script.setBinding(binding);
Object value = script.run();
return value.toString();
};
sparkSession.udf().register("rulesExecutingUDF",rulesExecutingUDF,DataTypes.StringType);
dataset=dataset.withColumn("NEW_VAL",callUDF("rulesExecutingUDF",col("VAL1"),col("VAL2"),col("VAL3")));
但是,出现以下错误:-
用户类引发异常:org.apache.spark.SparkException:任务不可序列化。引起原因:java.io.NotSerializableException:Script1
我认为groovy.lang.Script的脚本对象在这里产生了问题,因为出于某些原因spark无法对其进行序列化。
我应该在这里做什么?我尝试在互联网上搜索它,但没有得到任何解决方案。我是新来的火花,所以我不知道该怎么办。