Storm例子

2024-05-13 03:08
文章标签 例子 storm

本文主要是介绍Storm例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

例子说明:先随机产生一个数,然后乘以16,再然后添加一串字符串并转大写,再然后存入文件中

Main:

public class Main {public static void main(String[] args) throws InterruptedException, AlreadyAliveException, InvalidTopologyException {TopologyBuilder builder = new TopologyBuilder();builder.setSpout("randomint", new RandomSpout(), 1);builder.setBolt("multiply", new MultiplyBolt(), 3).shuffleGrouping("randomint");builder.setBolt("add", new AddBolt(), 3).shuffleGrouping("multiply");builder.setBolt("end", new EndBolt(), 3).shuffleGrouping("add");Config config = new Config();config.setDebug(true);if(args !=null && args.length > 0){config.setNumWorkers(3);StormSubmitter.submitTopology("goto", config, builder.createTopology());} else {			config.setMaxTaskParallelism(1);LocalCluster cluster = new LocalCluster();cluster.submitTopology("go", config, builder.createTopology());Thread.sleep(10000);cluster.shutdown();}}
}

randomint :


public class RandomSpout extends BaseRichSpout {private static final long serialVersionUID = 1L;private SpoutOutputCollector collator;@SuppressWarnings("rawtypes")public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {this.collator = collector;}public void nextTuple() {int num = getRandomInt();collator.emit(new Values(num));}public void declareOutputFields(OutputFieldsDeclarer declarer) {declarer.declare(new Fields("randomint"));}private int getRandomInt(){return new Random().nextInt(10000);}
}


multiply :

public class MultiplyBolt extends BaseBasicBolt {private static final long serialVersionUID = -2510535748201371391L;public void execute(Tuple input, BasicOutputCollector collector) {Integer num = input.getInteger(0);if(num==null){num = 0;}num = num * 16;collector.emit(new Values(num));}public void declareOutputFields(OutputFieldsDeclarer declarer) {declarer.declare(new Fields("multiply"));}}

add :


public class AddBolt extends BaseBasicBolt {private static final long serialVersionUID = 7852933092789941359L;public void execute(Tuple input, BasicOutputCollector collector) {Integer num = input.getInteger(0);String s = "is num : " + num;s = s.toUpperCase();collector.emit(new Values(s));}public void declareOutputFields(OutputFieldsDeclarer declarer) {declarer.declare(new Fields("add"));}}

end :

public class EndBolt extends BaseBasicBolt {private static final long serialVersionUID = -7167182237528493192L;public void execute(Tuple input, BasicOutputCollector collector) {String msg = input.getString(0);FileUtil.writer(msg);try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}}public void declareOutputFields(OutputFieldsDeclarer declarer) {declarer.declare(new Fields("end"));}}

FileUtil :

public class FileUtil {public static void writer(String msg){FileWriter writer = null;try {writer = new FileWriter("/tool/out.txt", true);writer.append(msg+"\n");writer.flush();} catch (IOException e) {e.printStackTrace();} finally {try {if(writer!=null){writer.close();writer = null;}} catch (IOException e) {e.printStackTrace();}}}
}










这篇关于Storm例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984510

相关文章

JavaFX环境的搭建和一个简单的例子

之前在网上搜了很多与javaFX相关的资料,都说要在Eclepse上要安装sdk插件什么的,反正就是乱七八糟的一大片,最后还是没搞成功,所以我在这里写下我搭建javaFX成功的环境给大家做一个参考吧。希望能帮助到你们! 1.首先要保证你的jdk版本能够支持JavaFX的开发,jdk-7u25版本以上的都能支持,最好安装jdk8吧,因为jdk8对支持JavaFX有新的特性了,比如:3D等;

javaScript日期相加减例子

当前时间加上2天 var d = new Date(“2015-7-31”); d.setDate(d.getDate()+2); var addTwo=d.getFullYear()+”年”+(d.getMonth()+1)+”月”+d.getDate()+”日”; “控制台输出===============”+”当前日期加2天:”+addTwo; 使用这种方法,月份也会给你计算.

设计模式大全和详解,含Python代码例子

若有不理解,可以问一下这几个免费的AI网站 https://ai-to.cn/chathttp://m6z.cn/6arKdNhttp://m6z.cn/6b1quhhttp://m6z.cn/6wVAQGhttp://m6z.cn/63vlPw 下面是设计模式的简要介绍和 Python 代码示例,涵盖主要的创建型、结构型和行为型模式。 一、创建型模式 1. 单例模式 (Singleton

JSP 简单表单显示例子

<html><!--http://localhost:8080/test_jsp/input.html --><head><meta http-equiv="Content-Type" content="text/HTML; charset=utf-8"><title>input页面</title></head><body><form action="input.jsp" method

shell循环sleep while例子 条件判断

i=1# 小于5等于时候才执行while [ ${i} -le 5 ]doecho ${i}i=`expr ${i} + 1`# 休眠3秒sleep 3doneecho done 参考 http://c.biancheng.net/cpp/view/2736.html

【ReactJS】通过一个例子学习React组件的生命周期

源代码 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Reac

简单的android Listview使用例子

为了熟悉Listview的使用,做了一个小例子联系一下, 主要步骤: 1. 在MainActivity中,创建一个adapter对象(可以是android自带的ArrayAdapter,也可以是自定义的如SongAdapter) 2. 如果自定义,就要创建ListView的子项,如song_listview_item.xml 3. 创建ListView对象,并用setAdapter方法把a

【 python pymongo】使用pymongo的例子

MongoDB优点 MongoDB是一个为当代web应用而生的noSQL数据库,它有如下优点: 1、文档型存储。可以把关系型数据库的表理解为一个电子表格,列表示字段,每行的记录其实是按照列的字段顺序排列的值得元组。而存储在MongoDB中的文档被存储为键-值对的形式,值却可以是任意类型且可以嵌套。之前在用关系型数据库的时候,我们把产品信息打散到不同的表中,要通过关系表或者使用join拼接成复杂

c:if test=/c:if如何判断空(使用例子)

userName是登录的时候放到session中了 <c:if test="${ not empty userName }">这表示userName判断不为null `<c:if test="${empty userName }"> ` 这表示userName判断为null 使用案例 <c:if test="${ not empty userName }"><ul><li><a

CSS学习6--背景图片、颜色、位置、附着、简写、透明、缩放、多背景、凹凸文字、导航栏例子

CSS背景 一、背景颜色和图片二、背景位置三、背景附着四、背景简写五、背景透明六、背景缩放七、多背景八、凹凸文字九、导航栏例子 一、背景颜色和图片 background-color: pink; 背景颜色backgroundoimage: url(##.jpg); 背景图片background-repeat: 平铺 repeat-x横向平铺,repeat-y纵向平铺; 平铺不到