在Java中序列化期间没有得到有效的构造函数错误


0

我试图序列化我的类RowSerializable,以便在 DataSet 中使用它,但是我遇到了这个错误

“无法读取用户代码包装: Flink.Utils.RowSerializable;没有有效的构造函数”

public class RowSerializable extends Row implements Serializable {

private Object[] fields2;

public RowSerializable(int arity){
super(arity);
this.fields2 = new Object[arity];
}
public RowSerializable(){
super(0);
}
}

一开始我没有创建非参数构造函数,所以我做了它,但我仍然有相同的错误

1 答案


0

只是为了那些需要参考的人。正如ejb明确指出的那样,我们不需要为POJO类添加参数构造函数,我们希望用自定义序列化器对其进行序列化。

这里有一个POJO类示例-记录.java

下面是一个示例自定义序列化程序类-RecordSerializer.java

要使用上述POJO和自定义序列化程序,我们需要在执行环境中注册它们。

下面是一个示例代码

final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    env.getConfig().registerTypeWithKryoSerializer(Record.class, RecordSerializer.class);

下面是完整代码的 chaining接。


我来回答

写文章

提问题

面试题