2017-02-28 5 views
0

私はApacheの嵐に取り組んでおり、HDFSを使用しています。もし私が並列1のヒントを使うと、1つのファイルが作成され、ファイルにデータを書き込んで正常に動作します。しかし、私が3にボルトのための並列性のヒントを増加させると、それは3つのファイルを作成し、1つのファイルだけにデータを書き込んでいます。HDFSでの並列処理のヒント

私のアプリケーションは、1つの注ぎ口と2本のボルト(XboltとYblot)を有する 並列ヒント スパウト1、Xbolt 1、Ybolt 3

アプリケーション スパウト流れは以下の通りである - > Xbolt - > Yboltを - >ファイル(複数可)

TopologyBuilder builder = new TopologyBuilder(); 
BoltDeclarer boltDeclarer; 

int parallelismHint = 0; 
parallelismHint = SpoutLogic.determineParallelismHint(config); 

builder.setSpout("TOPIC_ID", new Spout(), parallelismHint); 
parallelismHint = XBoltLogic.determineParallelismHint(config); 
boltDeclarer = builder.setBolt("XBOLT_ID", new XBolt(), parallelismHint);  
boltDeclarer.shuffleGrouping("TOPIC_ID","XBoltMessage"); 
parallelismHint = HDFSBoltLogic.determineParallelismHint(config); 
boltDeclarer = builder.setBolt("HDFSBOLT_ID",new HDFSBolt(), parallelismHint); 
boltDeclarer.fieldsGrouping("XBOLT_ID","XBoltMessage",new Fields("Table")); StormSubmitter.submitTopology("MyTopologyName", config, builder.createTopology()); 
+0

あなたの接続パターンは何ですか?すべてのデータが単一のボルトのみに送られることは可能ですか? –

+0

@gudivinayあなたのドライバーコードは – Alex

+0

@ MatthiasJ.Saxにあります。はい、すべてのデータは単一のボットのみにルーティングされます.i.e HDFSボルトと私はファイルにデータを書き込むために抽象HDFSボルトを使用しています。 –

答えて

0

あなたがfieldGroupingを使用している場合、ボルト(これはそうであっても).shuffle(にハッシュすべてのデータが)ボルトにラウンドロビン方式でデータを送信されるということが起こることができます。