获取org.apache.spark.SparkException:任务无法序列化:groovy.lang.script

时间:2020-04-06 13:29:19

标签: java apache-spark groovy groovyshell

我正在尝试执行以下代码:-

    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无法对其进行序列化。

我应该在这里做什么?我尝试在互联网上搜索它,但没有得到任何解决方案。我是新来的火花,所以我不知道该怎么办。

0 个答案:

没有答案