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