Hadoop HDFS的并行性提示
我正在使用ApacheStorm和HDFS。若我对螺栓1使用并行提示,它正在创建一个文件,将数据写入该文件并正常工作。但当我将bolt的parallelism hint增加到3时,它创建了3个文件,并且只向一个文件写入数据 我的应用程序有一个喷嘴和两个螺栓(Xbolt和Yblot) 并行性提示如下 喷嘴1、Xbolt 1、Ybolt 3 应用程序流程 喷出-->Xbolt-->Ybolt-->文件Hadoop HDFS的并行性提示,hadoop,hdfs,apache-storm,Hadoop,Hdfs,Apache Storm,我正在使用ApacheStorm和HDFS。若我对螺栓1使用并行提示,它正在创建一个文件,将数据写入该文件并正常工作。但当我将bolt的parallelism hint增加到3时,它创建了3个文件,并且只向一个文件写入数据 我的应用程序有一个喷嘴和两个螺栓(Xbolt和Yblot) 并行性提示如下 喷嘴1、Xbolt 1、Ybolt 3 应用程序流程 喷出-->Xbolt-->Ybolt-->文件 如果使用fieldGrouping,所有数据都可能散列到螺栓上(即使不太可能)。shuffle()
如果使用fieldGrouping,所有数据都可能散列到螺栓上(即使不太可能)。shuffle()将以循环方式将数据发送到螺栓上。您的连接模式是什么?是否所有数据都只能路由到一个螺栓?@gudivinay提供您的驱动程序代码please@MatthiasJ.Sax,是的,所有数据仅路由到单个bot。例如HDFS bolt,我正在使用抽象HDFS bolt将数据写入文件。@Alex,驱动程序代码?对不起,我是新来的风暴,我没有得到你的确切要求,你能澄清我吗?@gudivinay np,我的意思是你能发布你的主要方法的主体,在那里你设置螺栓,喷口和提交拓扑
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());