首页 > 解决方案 > java中的dill/pickle等价物,用于序列化java对象以发送到spark udf

问题描述

我正在尝试在 java 中创建一个 spark 应用程序,我需要调用一个需要 2 个参数的 UDF,如下所示

public static void myUdf(Object p1, List<MyClass> p2) {
    // custom logic
}

现在我在如下数据框上调用它

df.javaRDD().map(x -> myUdf(p1, myClassObjs)

我收到一个错误Task is not serializable。如何在将列表传递给 UDF 时对其进行序列化

在python中,我曾经做如下

def my_udf(p1, p2) {
    my_class_obj = dill.loads(p2)
    # custom logic
}

df.rdd.map(lambda x: my_udf(x, dill.dumps(my_class_obj))

我怎样才能在 Java 中实现同样的目标?

标签: javaapache-sparkpyspark

解决方案


推荐阅读