Apache storm 克鲁约在暴风雨中
我需要通过ApacheStorm(部署在远程集群中)序列化复杂对象(opencv:Mat)。有人能给我推荐一个好的自定义kryo序列化教程,或者提出一个解决方案吗? 提前谢谢 我已经创建了一个beanApache storm 克鲁约在暴风雨中,apache-storm,kryo,Apache Storm,Kryo,我需要通过ApacheStorm(部署在远程集群中)序列化复杂对象(opencv:Mat)。有人能给我推荐一个好的自定义kryo序列化教程,或者提出一个解决方案吗? 提前谢谢 我已经创建了一个bean public class DataBean{ Mat imageMatrix; int id; public DataBean(){ } public DataBean(int id, Mat matrix) { setId(id);
public class DataBean{
Mat imageMatrix;
int id;
public DataBean(){
}
public DataBean(int id, Mat matrix) {
setId(id);
setImageMatrix(matrix);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Mat getImageMatrix() {
return imageMatrix;
}
public void setImageMatrix(Mat matrix)
{
this.imageMatrix=matrix;
}
}
然后,我创建了序列化程序,如下所示:
public class DataBeankryo extends Serializer<DataBean> implements Serializable{
@Override
public DataBean read(Kryo arg0, Input arg1, Class<DataBean> arg2) {
DataBean bean=new DataBean();
bean.setId(arg1.readInt());
bean.setImageMatrix(arg0.readObject(arg1,org.opencv.core.Mat.class));
return bean;
}
@Override
public void write(Kryo arg0, Output output, DataBean bean) {
//arg0.register(org.opencv.core.Mat.class);
output.writeInt(bean.getId());
arg0.writeObject(output,bean.getImageMatrix(),arg0.getSerializer(org.opencv.core.Mat.class));
//arg0.writeClassAndObject(output, bean);
output.close(); }}
公共类DataBeankryo扩展序列化程序实现可序列化{
@凌驾
公共数据库读取(Kryo arg0,输入arg1,类arg2){
DataBean=newDataBean();
setId(arg1.readInt());
setImageMatrix(arg0.readObject(arg1,org.opencv.core.Mat.class));
返回豆;
}
@凌驾
公共void写入(kryoarg0、输出、数据bean){
//register(org.opencv.core.Mat.class);
writeInt(bean.getId());
writeObject(输出,bean.getImageMatrix(),arg0.getSerializer(org.opencv.core.Mat.class));
//arg0.writeClassAndObject(输出,bean);
output.close();}
我希望这能帮助你 我已经创建了一个bean
public class DataBean{
Mat imageMatrix;
int id;
public DataBean(){
}
public DataBean(int id, Mat matrix) {
setId(id);
setImageMatrix(matrix);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Mat getImageMatrix() {
return imageMatrix;
}
public void setImageMatrix(Mat matrix)
{
this.imageMatrix=matrix;
}
}
然后,我创建了序列化程序,如下所示:
public class DataBeankryo extends Serializer<DataBean> implements Serializable{
@Override
public DataBean read(Kryo arg0, Input arg1, Class<DataBean> arg2) {
DataBean bean=new DataBean();
bean.setId(arg1.readInt());
bean.setImageMatrix(arg0.readObject(arg1,org.opencv.core.Mat.class));
return bean;
}
@Override
public void write(Kryo arg0, Output output, DataBean bean) {
//arg0.register(org.opencv.core.Mat.class);
output.writeInt(bean.getId());
arg0.writeObject(output,bean.getImageMatrix(),arg0.getSerializer(org.opencv.core.Mat.class));
//arg0.writeClassAndObject(output, bean);
output.close(); }}
公共类DataBeankryo扩展序列化程序实现可序列化{
@凌驾
公共数据库读取(Kryo arg0,输入arg1,类arg2){
DataBean=newDataBean();
setId(arg1.readInt());
setImageMatrix(arg0.readObject(arg1,org.opencv.core.Mat.class));
返回豆;
}
@凌驾
公共void写入(kryoarg0、输出、数据bean){
//register(org.opencv.core.Mat.class);
writeInt(bean.getId());
writeObject(输出,bean.getImageMatrix(),arg0.getSerializer(org.opencv.core.Mat.class));
//arg0.writeClassAndObject(输出,bean);
output.close();}
我希望这能帮助你