storm自带例子详解 (三)——ExclamationTopology
来源:互联网 发布:工业机器人控制编程 编辑:程序博客网 时间:2024/05/29 10:25
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package storm.starter;import backtype.storm.Config;import backtype.storm.LocalCluster;import backtype.storm.StormSubmitter;import backtype.storm.task.OutputCollector;import backtype.storm.task.TopologyContext;import backtype.storm.testing.TestWordSpout;import backtype.storm.topology.OutputFieldsDeclarer;import backtype.storm.topology.TopologyBuilder;import backtype.storm.topology.base.BaseRichBolt;import backtype.storm.tuple.Fields;import backtype.storm.tuple.Tuple;import backtype.storm.tuple.Values;import backtype.storm.utils.Utils;import java.util.Map;/** * This is a basic example of a Storm topology. */ /* ** 一个基础的拓扑 */public class ExclamationTopology { // 定义一个Bolt,继承自BaseRichBolt public static class ExclamationBolt extends BaseRichBolt {// 输出收集器 OutputCollector _collector;// 准备函数 @Override public void prepare(Map conf, TopologyContext context, OutputCollector collector) { _collector = collector; }// 执行函数 @Override public void execute(Tuple tuple) { // 先接收一个单词,然后在他后面加上!!!,然后发送出去 _collector.emit(tuple, new Values(tuple.getString(0) + "!!!")); // 确认发送,保证了准确性 _collector.ack(tuple); }// 输出字段定义函数 @Override public void declareOutputFields(OutputFieldsDeclarer declarer) { // 定义一个字段word declarer.declare(new Fields("word")); } } public static void main(String[] args) throws Exception {// 创建一个拓扑构建器 TopologyBuilder builder = new TopologyBuilder();// 设置Spout,该Spout的名字是word,并行度是10 builder.setSpout("word", new TestWordSpout(), 10);// 设置Bolt,该Bolt的名字是exclaim1,并行度是3,它的上游是Spout(word)(即,接收名为word的Bolt的数据) builder.setBolt("exclaim1", new ExclamationBolt(), 3).shuffleGrouping("word");// 设置Bolt,该Bolt的名字是exclaim2,并行度是2,它的上游是Bolt(exclaim1)(即,接收名为exclaim2的Bolt的数据) builder.setBolt("exclaim2", new ExclamationBolt(), 2).shuffleGrouping("exclaim1"); Config conf = new Config();// 设置为debug模式 conf.setDebug(true); if (args != null && args.length > 0) { // 集群模式 // 设置工作进程的数量为3 conf.setNumWorkers(3); // 提交拓扑 StormSubmitter.submitTopologyWithProgressBar(args[0], conf, builder.createTopology()); } else { // 本地模式 // 构建一个本地集群 LocalCluster cluster = new LocalCluster(); // 提交一个名为test的拓扑 cluster.submitTopology("test", conf, builder.createTopology()); // 睡眠一段时间 Utils.sleep(10000); // 杀死拓扑 cluster.killTopology("test"); cluster.shutdown(); } }}
0 0
- storm自带例子详解 (三)——ExclamationTopology
- storm自带例子详解 (一)——WordCountTopologyNode
- storm自带例子详解 (二)——BasicDRPCTopology
- storm自带例子详解 (四)——ManualDRPC
- storm自带例子详解 (五)——PrintSampleStream
- storm自带例子详解 (六)——ReachTopology
- apache storm ExclamationTopology例子
- Storm-Starter分析————ExclamationTopology
- OpenCV自带例子(三)两幅图像相加
- matlab自带SVM算法例子(附函数详解)
- Strom学习01--例子ExclamationTopology
- ArcGIS.Server.9.2.DotNet自带例子分析(一、三)
- 使用hadoop自带的例子作测试 笔记三
- Struts自带例子介绍(一)
- Struts自带例子介绍(二)
- NotesList(Robotium自带的例子)
- JBOSS7下部署服务(三):使用自带JPA实现——hibernate
- Storm——最简单的例子
- VS2010右下角的Ins OVR
- 从众包视角看国内IT服务业发展
- MySQL数据库SQL语句整理
- 我在大学创业的两三事
- 00-自测1. 打印沙漏(20)
- storm自带例子详解 (三)——ExclamationTopology
- Android中的5种数据存储方式
- hdfs笔记
- httpd: Could not reliably determine the server's fully qualified domain name
- PB 数据窗口大字段换行显示
- 新常态,新发展——中小企业的机遇
- 大量停产紧缺电子料现货供应!另大量收电子大小物料!
- 为什么你得不到 90 度的温暖
- CDH优点