java - Apache Storm 中的自定义序列化

标签 java serialization apache-storm kryo

我尝试为 Apache Storm Spouts/Bolts 中使用的对象添加自定义序列化器。现在我的代码如下所示:

conf.registerSerialization(MyService.class, MyKryoSerializer.class);

public class MyKryoSerializer extends Serializer<MyService> {

    public MyKryoSerializer() {
        System.out.println("New MyKryoSerializaer!");
    }

    @Override
    public void write(Kryo kryo, Output output, MyService service) {
        System.out.println(72);
    }

    @Override
    public MyService read(Kryo kryo, Input input, Class<MyService> aClass) {
        System.out.println(73);
        return null;
    }

    public MyService copy(Kryo kryo, MyService myService) {
        System.out.println("MyService!");
        return myService;
    }
}

public class MyRandomSpout extends BaseRichSpout {

    private MyService service;

    private SpoutOutputCollector collector;

...

因此,当我尝试在本地集群上启动 Storm 拓扑时,我将在 stdout 中看到 “New MyKryoSerializaer!”,因此调用了构造函数,但写入/读取方法未被调用。有人能告诉我,我做错了什么吗? Storm 是否支持 Skyo 序列化器进行点/ bolt 序列化?

最佳答案

Storm 似乎不支持 Kryo 来序列化 Bolt 或 Spout。请参阅this line它明确尝试使用 Java 序列化进行序列化。

关于java - Apache Storm 中的自定义序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33720259/

相关文章:

java - 带有外部代码的 Java 模具类

c# - 序列化包含 List<T> 的 List<T>

java - 序列化 BST 树

java - Storm java.io.NotSerializableException : when running topology

java - 卡夫卡-> Storm ->flink : unexpected block data

java - 尝试让 java 和 eclipse 在 32 位 Windows 上运行

java - 继承方法的切入点

java - 使用 simple-xml 时转换 Point 对象

java - 如何使用 Eclipse 在本地实现 Storm 项目中的日志更改

java - Java 的垃圾收集何时释放内存分配?