Serialization ApacheStorm:记住喷口的旧输出字段数

Serialization ApacheStorm:记住喷口的旧输出字段数,serialization,storage,cluster-computing,apache-storm,Serialization,Storage,Cluster Computing,Apache Storm,将喷口声明从单个字段输出更改为两个字段输出后,集群似乎还记得它以前的输出声明。比如说 declarer.declare(new Fields("userTask")); 到 这个喷口已经序列化了。这也被记住了 日志状态中的错误 Tuple created with wrong number of fields. Expected 1 fields but got 2 fields 但现在它有了新的宣言 问题 有没有办法清除风暴群的历史?或者清除历史生成的序列化对象 或者这是另一个问题 为了保

将喷口声明从单个字段输出更改为两个字段输出后,集群似乎还记得它以前的输出声明。比如说

declarer.declare(new Fields("userTask"));

这个喷口已经序列化了。这也被记住了

日志状态中的错误

Tuple created with wrong number of fields. Expected 1 fields but got 2 fields
但现在它有了新的宣言

问题 有没有办法清除风暴群的历史?或者清除历史生成的序列化对象

或者这是另一个问题

为了保持理智,这里是喷口输出

outputCollector.emit(new Values(msgID, task), msgID);

感谢Nimbus buffers在
storm.local.dir
中提交拓扑。您应该能够删除那里的缓冲拓扑(即,一个jar文件)但要小心:删除“错误”文件会中断拓扑运行

Nimbus缓冲区在
storm.local.dir
中提交了拓扑。您应该能够删除那里的缓冲拓扑(即,一个jar文件)但要小心:删除“错误”文件会中断拓扑运行

这个问题是因为我在storm目录中有一个相同程序的原始编译jar,它来自以前在测试集群设置时构建和部署的jar

所发生的事情是,在启动Nimbus时,该文件中的任何jar都被包括在内,因此引用了这个旧jar,从而搞乱了已更改对象的序列化。您可以通过查看启动Nimbus时传递的参数来查看这一点

注意事项
不要将JAR放在Storm文件夹中,因为这可能会导致难以追踪的问题

这个问题是因为我在storm目录中有一个相同程序的原始编译jar,它来自以前在测试集群设置时构建和部署的jar

所发生的事情是,在启动Nimbus时,该文件中的任何jar都被包括在内,因此引用了这个旧jar,从而搞乱了已更改对象的序列化。您可以通过查看启动Nimbus时传递的参数来查看这一点

注意事项
不要将JAR放在Storm文件夹中,因为这可能会导致难以追踪的问题

谢谢,但我试过了,但还是不行。从这里清除jar:/usr/local/storm/storm local/nimbus/inbox您确定您提交的jar文件已正确更新,包含新的喷口代码吗?谢谢,但我尝试了,但仍然无法工作。从这里清除jar:/usr/local/storm/storm local/nimbus/inbox您确定您提交的jar文件已正确更新,包含新的喷口代码吗?
outputCollector.emit(new Values(msgID, task), msgID);