storm

遇到的问题

maven缺少依赖,下不了jar包
在网上找了篇博客

修改 Maven 的配置文件(安装目录下的 conf/settings.xml 文件),将 <mirrors>..</mirrors> 间的内容改为:

  
  
  1. <mirrors>
  2. <!-- mirror | Specifies a repository mirror site to use instead of a given
  3. repository. The repository that | this mirror serves has an ID that matches
  4. the mirrorOf element of this mirror. IDs are used | for inheritance and direct
  5. lookup purposes, and must be unique across the set of mirrors. | -->
  6. <mirror>
  7. <id>nexus-osc</id>
  8. <mirrorOf>central</mirrorOf>
  9. <name>Nexus osc</name>
  10. <url>http://maven.oschina.net/content/groups/public/</url>
  11. </mirror>
  12. <mirror>
  13. <id>nexus-osc-thirdparty</id>
  14. <mirrorOf>thirdparty</mirrorOf>
  15. <name>Nexus osc thirdparty</name>
  16. <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
  17. </mirror>
  18. </mirrors>
XML

以及将 <profile>...<profile> 之间的内容改为:

  
  
  1. <profile>
  2. <id>jdk-1.4</id>
  3.  
  4. <activation>
  5. <jdk>1.4</jdk>
  6. </activation>
  7.  
  8. <repositories>
  9. <repository>
  10. <id>nexus</id>
  11. <name>local private nexus</name>
  12. <url>http://maven.oschina.net/content/groups/public/</url>
  13. <releases>
  14. <enabled>true</enabled>
  15. </releases>
  16. <snapshots>
  17. <enabled>false</enabled>
  18. </snapshots>
  19. </repository>
  20. </repositories>
  21. <pluginRepositories>
  22. <pluginRepository>
  23. <id>nexus</id>
  24. <name>local private nexus</name>
  25. <url>http://maven.oschina.net/content/groups/public/</url>
  26. <releases>
  27. <enabled>true</enabled>
  28. </releases>
  29. <snapshots>
  30. <enabled>false</enabled>
  31. </snapshots>
  32. </pluginRepository>
  33. </pluginRepositories>
  34. </profile>
XML

改好后保存,再次执行 maven ... 应该就可以了。


第一个小程序,数字累加

public class StormDemo {
    /**
     * 创建spout
     * @author Administrator
     *
     */
    public static class MySpout extends BaseRichSpout{
        Map conf;
        TopologyContext context;
        SpoutOutputCollector collector;
        
        int i;
        //这是一个死循环,会不停的被调用
        public void nextTuple() {
            this.collector.emit(new Values(i++));
            
            
        }
        /**
         * 初始化方法,只会被执行一次,在这里面可以执行一些初始化的操作
         * Map conf  配置类,tolplogy的配置信息
         * TopologyContext context  tolplogy的上下文
         * SpoutOutputCollector collector 发射器,向外发射数据
         */
        public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
            this.conf = conf;
            this.context = context;
            this.collector = collector;
            
        }
        //声明输出字段,给发送出去的数据相应的起个名字
        public void declareOutputFields(OutputFieldsDeclarer declarer) {
            declarer.declare(new Fields("num"));
            
        }
        
    }
    
    public static class MyBolt extends BaseRichBolt{
        
        Map stormConf;
        TopologyContext context;
        OutputCollector collector;
        
        int sum;
        //会被循环调用,只要spout发送一个tuple,这边就会被调用一次
        public void execute(Tuple input) {
            Integer value = input.getIntegerByField("num");
            sum += value;
            System.out.println("sum="+sum);
            
        }
        
        public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
            this.stormConf = stormConf;
            this.context = context;
            this.collector = collector;
            
        }
        //只有spout中的nexttuple或者bolt中的execute中执行了emit发射功能,才需要在这里声明输出字段
        public void declareOutputFields(OutputFieldsDeclarer arg0) {
            
            
        }
        
    }
    
    public static void main(String[] args) {
        TopologyBuilder topologyBuilder = new TopologyBuilder();
        topologyBuilder.setSpout("aa", new MySpout());
        topologyBuilder.setBolt("bb", new MyBolt()).shuffleGrouping("aa");
        //创建一个本地集群来运行topology任务
        LocalCluster localCluster = new LocalCluster();
        localCluster.submitTopology("localTopology", new Config(), topologyBuilder.createTopology());
    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值