Storm常见模式——BasicBolt

2019-03-02 23:44|来源: 网路

Storm中的很多Bolt都有一个最常见的处理步骤:

  1. 读入一个tuple;
  2. 根据这个输入tuple,提取后发射0个,1个或多个tuple;
  3. 最后,通过ack操作确认这个tuple被成功处理。

按照上述处理步骤,依次处理发向这个Bolt的各个tuple元组。

这种模式可以实现像ETL这类的简单函数或过滤器功能,Storm中专门为这种模式封装了相应接口:IBasicBoltBaseBasicBolt等类实现了这一接口。

下面是以BaseBasicBolt为基础,按照上述模式实现词频统计的Bolt(代码参考链接:storm-starter):

public static class WordCount extends BaseBasicBolt {
     //记录每个单词及单词出现的次数
        Map<String, Integer> counts = new HashMap<String, Integer>();

        @Override
        public void execute(Tuple tuple, BasicOutputCollector collector) {
            String word = tuple.getString(0);
            Integer count = counts.get(word); //提取单词出现次数
            if(count==null)
         count = 0;
            count++;
            counts.put(word, count); //更新单词出现次数
            collector.emit(new Values(word, count)); //发射统计结果
        }

        @Override
        public void declareOutputFields(OutputFieldsDeclarer declarer) {
       declarer.declare(new Fields("word", "count"));
        }
    }

转自:http://www.cnblogs.com/panfeng412/archive/2012/06/19/storm-common-patterns-of-basicbolt

相关问答

更多
  • 中了病毒有可能让系统瘫痪
  • 1.jpg 支持的,0.9开始支持得好一些在以前的版本里,如果想在Windows平台上运行Storm,你需要安装ZeroMQ,修改Storm的源码,追加一些Windows平台特定的脚本。而在新的版本里,因为用netty替换了ZeroMQ,由于netty用纯java实现,因此使得Storm具有更好的跨平台特性,现在要在Windows上运行Storm比以前容易很多。
  • ext2,ext3比较常用,但是最新的ubuntu己经在用ext4了。我用的就是。另个,还有一些嵌入式linux系统常用jffs和yaffs文件系统。而且,linux支持几乎所有你所知道的文件系统类型(也即分类类型).包括windows下常用的fat32 ,ntfs等。
  • 一共23种设计模式! 按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。 创建型模式用来处理对象的创建过程;结构型模式用来处理类或者对象的组合;行为型模式用来对类或对象怎样交互和怎样分配职责进行描述。 创建型模式用来处理对象的创建过程,主要包含以下5种设计模式:  工厂方法模式(Factory Method Pattern)  抽象工厂模式(Abstract Factory Pattern)  建造者模式(Builder Pattern)  原型模式(Prototype Patter ...
  • http://zhidao.baidu.com/question/20013947.html?fr=qrl3
  • 常见代码 function CreatePerson(name,age,sex) { var obj = new Object(); obj.name = name; obj.age = age; obj.sex = sex; obj.sayName = function(){ return this.name; } return obj; } var p1 = new CreatePerson("longen",'28','男'); var p2 = new CreatePerson("tugenhua" ...
  • 问题支架 。问题是学习过程中最为常见的支架,相对“框架问题”而言,支架问题的系统性较弱,有经验的教师会在学生的学习过程中自然地、应机地提供此类支架。同时,在特定主题的学习中,“支架问题”往往比“框架问题”更具结构性,更加关注细节与可操作性
  • 师生系统的传授和学习书本知识 教师辅导学生从活动中自己学习 折衷于俩者之间的教学模式
  • 为每个更新步骤做所有事情的复合(例如渲染)(在所有的UI库中确实很常见)。 Flyweight用于在屏幕上绘制许多相同的物品类型(树木/灌木丛/子弹) 观察很多UI库(再次,不是游戏特定的) 在游戏/菜单/控制台/暂停/等之间转换的状态。 状态 抽象工厂,用于制作小怪/ NPC的游戏类型(游戏中每次可笑的AI角色数量 - 即Left 4 Dead)。 在A *等路径寻找算法中交换启发式策略 编辑>命令像MMO的游戏有一个可互换按钮的操作栏,你可以点击施放法术和什么。 这就是我现在所能想到的一切。 Compo ...