2017-03-26 5 views
0

가정하면 우리는, 즉 데이터베이스의 정보를 지속, 다음 토폴로지터플을 방출해서는 안되는 Apache 폭풍우 마지막 볼트?

spout A -> bolt B -> bolt C -> bolt E 

볼트 E 마지막 한 어떤 튜플을 방출하기 때문에 아무 필요가 없다. 어떻게 이러한 솔루션을 구현하기 위해,

내가 더 output_fields이 정의 경우 - 나는 예외

Exception in thread "main" java.io.IOException: org.apache.storm.thrift.protocol.TProtocolException: Required field 'output_fields' is unset! Struct:StreamInfo(output_fields:null, direct:false) 
     at storm.petrel.ThriftReader.read(ThriftReader.java:77) 
     at storm.petrel.GenericTopology.readTopology(GenericTopology.java:36) 
     at storm.petrel.GenericTopology.main(GenericTopology.java:53) 
Caused by: org.apache.storm.thrift.protocol.TProtocolException: Required field 'output_fields' is unset! Struct:StreamInfo(output_fields:null, direct:false) 
     at org.apache.storm.generated.StreamInfo.validate(StreamInfo.java:407) 
     at org.apache.storm.generated.StreamInfo$StreamInfoStandardScheme.read(StreamInfo.java:485) 
     at org.apache.storm.generated.StreamInfo$StreamInfoStandardScheme.read(StreamInfo.java:441) 
     at org.apache.storm.generated.StreamInfo.read(StreamInfo.java:377) 
     at org.apache.storm.generated.ComponentCommon$ComponentCommonStandardScheme.read(ComponentCommon.java:681) 
     at org.apache.storm.generated.ComponentCommon$ComponentCommonStandardScheme.read(ComponentCommon.java:636) 
     at org.apache.storm.generated.ComponentCommon.read(ComponentCommon.java:552) 
     at org.apache.storm.generated.Bolt$BoltStandardScheme.read(Bolt.java:451) 
     at org.apache.storm.generated.Bolt$BoltStandardScheme.read(Bolt.java:427) 
     at org.apache.storm.generated.Bolt.read(Bolt.java:358) 
     at org.apache.storm.generated.StormTopology$StormTopologyStandardScheme.read(StormTopology.java:727) 
     at org.apache.storm.generated.StormTopology$StormTopologyStandardScheme.read(StormTopology.java:683) 
     at org.apache.storm.generated.StormTopology.read(StormTopology.java:595) 
     at storm.petrel.ThriftReader.read(ThriftReader.java:75) 
     ... 2 more 

답변

0

하십시오 다시 체크 볼트 E를 얻을, 그것은 의미 볼트의 (그것이 어떤 다른 사람에 의해 설정되지 않은 확인 볼트 E는 TopologyBuilder.setBolt 메소드에서 사용하지 않았습니다. 예 : TopologyBuilder.setBolt ("mybolt", new MyBolt()). fieldsGrouping ("bolt E", new Fields (new String [] { "user_id"})));