2017-02-28 59 views
0

我正在使用apache风暴并使用HDFS。如果我使用螺栓1的并行提示,并且它正在创建一个文件,请将数据写入文件并正常工作。但是,当我将螺栓的并行提示增加到3时,它将创建3个文件并将数据写入到一个文件中。HDFS的并行提示

我的应用程序具有一个喷管和两个螺栓(Xbolt和Yblot) 并行暗示如下 喷嘴1,Xbolt 1,Ybolt 3

应用流 喷 - > Xbolt - > Ybolt - >文件(S)

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(所有数据将在发送循环方式的数据螺栓。