2017-01-22 9 views
1

(リモートクラスタにデプロイされた)apache stormに対する複雑なオブジェクト(opencv:Mat)をシリアル化する必要があります。誰も私に良いチュートリアルカスタムkryoシリアル化を提案するか、これを行う方法の解決策を提案できますか? ありがとうございます!kryo serialization over storm

答えて

0

私はこの問題を解決しました。

+0

私は、OpenCV MatをKryoでシリアル化する方法も探しています。Apache StormではなくAkka Remotingですが、シリアライザの外観はどうですか? – Toaditoad

0

を必要に応じて気軽に私はその後、私は次のようにシリアライザを作成した豆に

 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();  }} 

私は、これはあなたを助けることを願って!