2017-03-26 13 views
0

Eがデータベース、任意のタプルを放出するため、無ニーズの情報を持続し、最終的な1、である。我々は次のトポロジタプルを放つべきではないApacheの嵐の最終的なボルト?

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

ボルトを持っていると仮定すると、その後、私は例外

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を得ることが任意の他の人によって設定されていなかったボルト(それがボルトを意味しています確認してください - 私はoutput_fieldsを定義していない場合は、

をこのようなソリューションを実装する方法Eは、TopologyBuilder.setBoltのいずれのメソッドでも使用されませんでした。たとえば、TopologyBuilder.setBolt( "mybolt"、new MyBolt())。fieldsGrouping( "bolt E"、 new Fields(new String [] {"user_id"})));

関連する問題