Storm的程序叫做Topology,类似MapReduce job

一个Topolog应该有Spout,代表数据源,和若干个bolt

首先写一个Spout

public class RandomSpout extends BaseRichSpout {

	private String[] names = new String[]{"zhangsan", "lisi", "wangwu", "zhaoliu"};

	private SpoutOutputCollector collector;
/**
* 初始化方法
*/
@Override
public void open(Map conf, TopologyContext context,
SpoutOutputCollector collector) { this.collector = collector;
} /**
* 发射一个Tuple到Topology都是通过这个方法来实现的
*/
@Override
public void nextTuple() {
this.collector.emit(new Values(names[new Random().nextInt(names.length)]));
} /**
* 此方法用于声明当前Spout的Tuple发送流, 声明tuple中的字段的名称
*/
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("name"));
} }

写一个字符串大写的bolt

public class UpperBolt extends BaseBasicBolt{

	/**
* bolt的核心方法,主要负责对数据进行处理
*/
@Override
public void execute(Tuple input, BasicOutputCollector collector) {
collector.emit(new Values(input.getString(0).toUpperCase()));
} @Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("name"));
}
}

写一个输出到文件的bolt

public class ExtBolt extends BaseBasicBolt{
FileWriter fileWriter = null; @Override
public void prepare(Map stormConf, TopologyContext context) {
// /home/hemingliang
File file = new File("/home/hadoop/stormoutput/"
+ UUID.randomUUID());
try {
fileWriter = new FileWriter(file);
} catch (IOException e) {
e.printStackTrace();
}
} @Override
public void execute(Tuple input, BasicOutputCollector collector) {
String name = input.getString(0);
name = name + "_\n";
try {
fileWriter.write(name);
fileWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}
} @Override
public void declareOutputFields(OutputFieldsDeclarer declarer) { } @Override
public void cleanup() {
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
} }

 

打成jar包,比如为 storm.jar

stormoutput目录应该存在,不然看不到数据

执行 storm.jar : ./storm jar ~/storm.jar com.storm.RunTopology

列出所有的Topology :  ./storm list

接触一个Topology  : ./storm kill topology名称

storm 随机发送字符串的更多相关文章

  1. php这是一个随机打印输出字符串的例子

    <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); define(& ...

  2. 要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10;

    package text1; import java.util.ArrayList; import java.util.HashSet; /* * 要求产生10个随机的字符串, * 每一个字符串互相不 ...

  3. c# .Net随机生成字符串代码

    /// <summary> /// 随机生成字符串 /// </summary> /// <param name="OperationType"> ...

  4. python生成随机日期字符串

    python生成随机日期字符串 生成随机的日期字符串,用于插入数据库. 通过时间元组设定一个时间段,开始和结尾时间转换成时间戳. 时间戳中随机取一个,再生成时间元组,再把时间元组格式化输出为字符串 # ...

  5. Java随机字符串:随机数字字符串,工具类

    Java中生成随机数,字符串的工具类 1. 调用方法需要传入生成字符串的长度和需要的类型 生成随机数字 生成随机字母字符串 生成随机字符串+数字等 ......... 2. 总共8种类型,具体看工具类 ...

  6. delphi消息发送字符串

    delphi消息发送字符串 其实不论什么方法,归根揭底都是通过传递对象的指针来达到效果的. 方法一: procedure SendString(strMSG: string);var  Data: t ...

  7. 在论坛中出现的比较难的sql问题:27(字符串拆分、字符串合并、非连续数字的间隔范围、随机返回字符串)

    原文:在论坛中出现的比较难的sql问题:27(字符串拆分.字符串合并.非连续数字的间隔范围.随机返回字符串) 在论坛中看到一个帖子,帖子中有一些sql方面的面试题,我觉得这些面试题很有代表性. 原帖的 ...

  8. js产生一个随机的字符串数字组合

    /** * 随机生成字符串 * @param randomFlag 产生任意长度随机字母数字组合 * @param min 任意长度最小位[固定位数] * @param max 任意长度最大位 * @ ...

  9. 随机发送n位数字+字母的验证码

    ''' 随机发送n位数字+字母的验证码 ''' import random def get_verified(length): code = '' for i in range(length): nu ...

随机推荐

  1. Open vSwitch流表应用实战

    本文参考:Open vSwitch流表应用实战 一个通过改变流表下发而实现的互相通信实验. 实验目的: 掌握Open vSwitch下发流表操作: 掌握添加.删除流表命令以及设备通信的原理. 原理:. ...

  2. PHP 单例模式代码片段

    <?php error_reporting(E_ALL | E_STRICT); class single{ public $hash; static protected $ins = null ...

  3. Vi问题

    ,ubuntu11.10下vi编辑器按i,左下方没有出现“输入模式”或者“insert”.在桌面环境下,用ctrl+alt+t调出命令行打开是这样,在第一控制台ctrl+alt+F1下打开,也是这样, ...

  4. node.js 初体验

    node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...

  5. PHP 中获取当前时间[Datetime Now]

    在 PHP 中可以通过date()获取当前时间,在>5.2的版本中最好还是用 datetime 类型 date() <?php echo date('Y-m-d H:i:s'); ?> ...

  6. Alternative Representations for 4-Bit Integers

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION

  7. storm-kafka-0.8-plus 源码解析

    https://github.com/wurstmeister/storm-kafka-0.8-plus http://blog.csdn.net/xeseo/article/details/1861 ...

  8. 【转】android中最好的瀑布流控件PinterestLikeAdapterView

    [源地址]http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0919/1696.html 之前我们介绍过一个开源的瀑布流控件Stag ...

  9. 【转】NGUI创建UIRoot后报NullReferenceException的解决办法

    本文参考自 http://forum.china.unity3d.com/thread-1099-1-1.html 使用NGUI版本3.7.5. 在创建了一个UIRoot后,有时会报NullRefer ...

  10. javaScript没有块级作用域

    1.如下,变量i,j,k 的作用域是相同的. function test(obj){ var i= 0; if(typeof obj == "object"){ var j = 0 ...