上代码:主要看main方法中的设置.   如下代码是一般情况下的设置方法...Trident中设置多数据源看对应的博客总结

  1. /**
  2. * 指定多个数据源
  3. * 数字累加求和
  4. * 先添加storm依赖
  5. */
  6. public class LocalTopologyMeger {
  7. /**
  8. * spout需要继承baserichspout,实现未实现的方法
  9. * @author Administrator
  10. *
  11. */
  12. public static class MySpout extends BaseRichSpout{
  13. private Map conf;
  14. private TopologyContext context;
  15. private SpoutOutputCollector collector;
  16.  
  17. /**
  18. * 初始化方法,只会执行一次
  19. * 在这里面可以写一个初始化的代码
  20. * Map conf:其实里面保存的是topology的一些配置信息
  21. * TopologyContext context:topology的上下文,类似于servletcontext
  22. * SpoutOutputCollector collector:发射器,负责向外发射数据(tuple)
  23. */
  24. @Override
  25. public void open(Map conf, TopologyContext context,
  26. SpoutOutputCollector collector) {
  27. this.conf = conf;
  28. this.context = context;
  29. this.collector = collector;
  30. }
  31.  
  32. int num = 1;
  33. /**
  34. * 这个方法是spout中最重要的方法,
  35. * 这个方法会被storm框架循环调用,可以理解为这个方法是在一个while循环之内
  36. * 每调用一次,会向外发射一条数据
  37. */
  38. @Override
  39. public void nextTuple() {
  40. System.out.println("spout发射:"+num);
  41. //把数据封装到values中,称为一个tuple,发射出去
  42. this.collector.emit(new Values(num++));
  43. Utils.sleep(1000);
  44. }
  45.  
  46. /**
  47. * 声明输出字段
  48. */
  49. @Override
  50. public void declareOutputFields(OutputFieldsDeclarer declarer) {
  51. //给values中的数据起个名字,方便后面的bolt从这个values中取数据
  52. //fields中定义的参数和values中传递的数值是一一对应的
  53. declarer.declare(new Fields("num"));
  54. }
  55.  
  56. }
  57.  
  58. /**
  59. * 自定义bolt需要实现baserichbolt
  60. * @author Administrator
  61. *
  62. */
  63. public static class MyBolt extends BaseRichBolt{
  64. private Map stormConf;
  65. private TopologyContext context;
  66. private OutputCollector collector;
  67.  
  68. /**
  69. * 和spout中的open方法意义一样
  70. */
  71. @Override
  72. public void prepare(Map stormConf, TopologyContext context,
  73. OutputCollector collector) {
  74. this.stormConf = stormConf;
  75. this.context = context;
  76. this.collector = collector;
  77. }
  78.  
  79. int sum = 0;
  80. /**
  81. * 是bolt中最重要的方法,当spout发射一个tuple出来,execute也会被调用,需要对spout发射出来的tuple进行处理
  82. */
  83. @Override
  84. public void execute(Tuple input) {
  85. //input.getInteger(0);//也可以根据角标获取tuple中的数据
  86. Integer value = input.getIntegerByField("num");
  87. sum+=value;
  88. System.out.println("和:"+sum);
  89. }
  90.  
  91. /**
  92. * 声明输出字段
  93. */
  94. @Override
  95. public void declareOutputFields(OutputFieldsDeclarer declarer) {
  96. //在这没必要定义了,因为execute方法中没有向外发射tuple,所以就不需要声明了。
  97. //如果nextTuple或者execute方法中向外发射了tuple,那么declareOutputFields必须要声明,否则不需要声明
  98. }
  99.  
  100. }
  101. /**
  102. * 注意:在组装topology的时候,组件的id在定义的时候,名称不能以__开头。__是系统保留的
  103. * @param args
  104. */
  105. public static void main(String[] args) {
  106. //组装topology
  107. TopologyBuilder topologyBuilder = new TopologyBuilder();
  108. topologyBuilder.setSpout("spout1", new MySpout());
  109. topologyBuilder.setSpout("spout2", new MySpout());
  110. //.shuffleGrouping("spout1"); 表示让MyBolt接收MySpout发射出来的tuple
  111. topologyBuilder.setBolt("bolt1", new MyBolt()).shuffleGrouping("spout1").shuffleGrouping("spout2");
  112.  
  113. //创建本地storm集群
  114. LocalCluster localCluster = new LocalCluster();
  115. localCluster.submitTopology("sumTopology", new Config(), topologyBuilder.createTopology());
  116. }
  117. }

在Storm的Toplogy中设置多数据源Spout的更多相关文章

  1. spring、spring boot中配置多数据源

    在项目开发的过程中,有时我们有这样的需求,需要去调用别的系统中的数据,那么这个时候系统中就存在多个数据源了,那么我们如何来解决程序在运行的过程中到底是使用的那个数据源呢? 假设我们系统中存在2个数据源 ...

  2. 如何在spring框架中解决多数据源的问题

    在我们的项目中遇到这样一个问题:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库.我们以往在spring和hibernate框架中总是配置一个数据源,因而sessi ...

  3. Storm集群中执行的各种组件及其并行

    一.Storm中执行的组件      我们知道,Storm的强大之处就是能够非常easy地在集群中横向拓展它的计算能力,它会把整个运算过程切割成多个独立的tasks在集群中进行并行计算.在Storm中 ...

  4. SQL Server 2005中设置Reporting Services发布web报表的匿名访问

    原文:SQL Server 2005中设置Reporting Services发布web报表的匿名访问 一位朋友提出个问题:集成到SQL Server 2005中的Reporting Services ...

  5. Storm官方文档翻译之设置开发环境

    本文将介绍如何设置Storm的开发环境.下面是大纲: 1.下载Storm发布包,解压,将解压的 bin目录放到你电脑的PATH中. 2.为了能够在远程集群中启动或者停止Topology,请将集群信息放 ...

  6. springboot中实现多数据源

    springboot中实现多数据源 1.什么场景需要多数据源 业务读写分离 业务分库 业务功能模块拆分多库 2.常见的多数据源的方案 按照数据源分别把mapper和entity放到不同的package ...

  7. mybatis中设置打印sql语句application.yml

    在application.yml配置文件中,找到数据源设置,添加: mybatis: configuration: log-impl:org.apache.ibatis.logging.stdout. ...

  8. SSIS中出现数据流数据源假死状态的解决办法

    相信开发过Sql Server SSIS的人都遇到过在数据流中数据源假死的问题,特别是Excel Source特别容易假死,当job执行到数据流中的Excel Source时,既不报错也不执行,也没有 ...

  9. Spring中配置DataSource数据源的几种选择

    从JNDI获得DataSource. 从第三方的连接池获得DataSource. 使用DriverManagerDataSource获得DataSource. 一.从JNDI获得DataSource ...

随机推荐

  1. vue中的前置守卫

    前置守卫是为了验证用户信息真实性,一些内容只能在用户登陆以后才能进行查看,例如个人中心,我的购物车,等个人页面,非隐私页面 用router.beforeEach进行验证,这个方法必须写在router实 ...

  2. int -2147483648 ----- 2147483647

    int最大值+1为什么是-2147483648最小值-1为什么是2147483647   今天一个新手学编程就问到这个问题,很多人第一次学编程肯定会遇到这个问题,大部分都知道是溢出之类的,用源码和补码 ...

  3. asp.net微信支付发起页面jsapi.aspx

    jsapi.aspx 后台核心代码 //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(Context); //初始化 p ...

  4. 批处理最完整人性化教程(.bat文件语法)

    原文链接:http://www.cnitblog.com/seeyeah/archive/2009/01/15/53808.html 这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,你要你识字 ...

  5. Linux远程批量工具mooon_ssh和mooon_upload使用示例

    目录 目录 1 1. 前言 1 2. 批量执行命令工具:mooon_ssh 2 3. 批量上传文件工具:mooon_upload 2 4. 使用示例 3 4.1. 使用示例1:上传/etc/hosts ...

  6. 工作中的小tips(持续更新)

    1.在工作的时候一定要留下痕迹,这样即使乙方抵赖,或者说领导认为你没干活的时候留下证据(电话没有微信,邮件之类的文字类有效果) 2.每天晚上下班之前将一天的工作总结一下,把第二天的工作给罗列出来,以方 ...

  7. 20155326 第12周课堂实践总结(二)String类和Arrays类的学习

    20155326 第12周课堂实践总结(二)String类和Arrays类的学习 实践二 Arrays和String单元测试 实践题目 在IDEA中以TDD的方式对String类和Arrays类进行学 ...

  8. java注解学习(1)注解的作用和三个常用java内置注解

    今天,记录一下自己学习的关于注解方面的知识. Annotation是从JDK5.0开始引入的新技术 Annotation的作用: -不是程序本身,可以对程序做出解释(这一点和注释没什么区别) -可以被 ...

  9. python模块补充

    一.模块补充 configparser 1.基本的读取配置文件 -read(filename) 直接读取ini文件内容 -sections() 得到所有的section,并以列表的形式返回 -opti ...

  10. PB函数大全【转自 http://blog.csdn.net/xiaoxian8023 】

    Abs()功能计算绝对值.语法Abs ( n )参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值.如果参数n的值为NULL,Abs()函数 ...