2013-06-04 1 views
3

작업 훅을 추가하여 Tweak 한 작동중인 Storm 토폴로지가 있었는데 지금은 config가 json-serializable이 아니라는 오류가 발생합니다. 이 토폴로지가 LocalCluster에 제출되면 오류가 발생합니다.작업 훅이 JSON 직렬화가되지 않는 것 같습니다.

내 문제는 내가 제대로 작업 후크를 구성하지 않는다는 것입니다. 설정 유형 backtype.storm.Config, 및 RubeGoldbergTaskHook이다

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

BaseTaskHook

내가 설정을 설정하지 않는 건가요 확장 : 내 토폴로지 드라이버 클래스에서, 나는 토폴로지를 제출하기 직전에 나는이 작업을 수행. TOPOLOGY_AUTO_TASK_HOOKS 속성을 올바르게 수정했거나 RubeGoldbergTaskHook 클래스를 JSON- 직렬화 가능으로 수정해야합니까?

답변

2

이렇게 사용하십시오. 이

는 구성 맵에 자바 인스턴스를 사용하고자 할 경우
List<String> hooksList= new ArrayList<String>(); 
hooksList.add(RubeGoldbergTaskHook.class.getName()); 
conf.put(Config.TOPOLOGY_AUTO_TASK_HOOKS, hooksList); 
1

, 대안은있다 ... 작동합니다 : 바이트에 (이 스톰이 제공된다로) 당신이 kryo에 직렬화 할 수 있습니다 배열로 변환 한 다음이를 기본 64 문자열로 변환합니다. 그렇게하면 모든 볼트의 폭풍 구성에서 모든 Java 인스턴스를 deserialize 할 수 있습니다. 그것이 유용하다는 것을 희망하십시오.