3

我有一个工作的 Storm 拓扑,我通过添加一个任务挂钩进行了调整,现在我收到一个错误,说我的配置不是 json 可序列化的。将拓扑提交到 LocalCluster 时发生错误。

我怀疑我的问题是我没有正确配置任务挂钩。在我的拓扑驱动程序类中,就在我提交拓扑之前,我这样做:

config.put(config.TOPOLOGY_AUTO_TASK_HOOKS, new RubeGoldbergTaskHook());

其中 config 是 backtype.storm.Config 类型,RubeGoldbergTaskHook 扩展 BaseTaskHook

我是否没有正确设置 config.TOPOLOGY_AUTO_TASK_HOOKS 属性,还是需要将我的 RubeGoldbergTaskHook 类修改为 JSON 可序列化?

4

2 回答 2

2

以这种方式使用。它会工作...

List<String> hooksList= new ArrayList<String>();
hooksList.add(RubeGoldbergTaskHook.class.getName());
conf.put(Config.TOPOLOGY_AUTO_TASK_HOOKS, hooksList);
于 2013-06-06T13:20:41.937 回答
1

如果您确实想在配置映射中使用 java 实例,还有另一种选择:您可以在 kryo(Storm 提供)中将其序列化为字节数组,然后将其转换为 base 64 字符串。这样,您将能够从任何 Bolt 中的 Storm 配置中反序列化任何 java 实例。希望它是有用的。

于 2013-10-15T16:34:36.330 回答