gpt4 book ai didi

java - 用 Java Lambda 编写的 Spark UDF 引发 ClassCastException

转载 作者:太空宇宙 更新时间:2023-11-04 10:48:55 24 4
gpt4 key购买 nike

异常(exception)情况如下:

java.lang.ClassCastException: cannot assign instance of java.lang.invoke.SerializedLambda to ... of type org.apache.spark.sql.api.java.UDF2 in instance of ...

如果我不通过Lambda表达式实现UDF,也可以。喜欢:

private UDF2 funUdf = new UDF2<String, String, String>() {
@Override
public String call(String a, String b) throws Exception {
return fun(a, b);
}
};
dataset.sparkSession().udf().register("Fun", funUdf, DataTypes.StringType);
functions.callUDF("Fun", functions.col("a"), functions.col("b"));

我在本地运行,所以这个答案不会帮助:https://stackoverflow.com/a/28367602/4164722

为什么?我该如何修复它?

最佳答案

这是一个可行的解决方案:

UDF1 myUDF = new UDF1<String, String>() {
public String call(final String str) throws Exception {
return str+"A";
}
};

sparkSession.udf().register("Fun", myUDF, DataTypes.StringType);

Dataset<Row> rst = sparkSession.read().format("text").load("myFile");

rst.withColumn("nameA",functions.callUDF("Fun",functions.col("name")))

关于java - 用 Java Lambda 编写的 Spark UDF 引发 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48054559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com