• storm 经常使用类


    <dependency>
    	<groupId>org.apache.storm</groupId>
    	<artifactId>storm-core</artifactId>
    	<version>0.9.5</version>
    </dependency>

    经常使用类

    backtype.storm.topology.TopologyBuilder
    用来建立topology。


    SpoutDeclarer backtype.storm.topology.TopologyBuilder.setSpout(String id, IRichSpout spout, Number parallelism_hint)
    给topology设置spout。parallelism_hint为将要运行这个spout的任务数。每一个任务相应着一个线程。


    BoltDeclarer backtype.storm.topology.TopologyBuilder.setBolt(String id, IRichBolt bolt, Number parallelism_hint)
    给topology设置bolt。

    backtype.storm.Config
    此类拥有一系列成员方法。用来设置相应的參数。

    void backtype.storm.StormSubmitter.submitTopology(String name, Map stormConf, StormTopology topology) 
    向storm集群提交topology。


    backtype.storm.topology.IComponent
    一个接口,表明topology的组件。
    void backtype.storm.topology.IComponent.declareOutputFields(OutputFieldsDeclarerdeclarer)
    声明当前topology的全部stream的输出模式。

    backtype.storm.topology.OutputFieldsDeclarer
    输出字段的声明者。

    void backtype.storm.topology.OutputFieldsDeclarer.declare(Fields fields)
    用默认的stream id进行声明。

    void backtype.storm.topology.OutputFieldsDeclarer.declareStream(String streamId, Fields fields)
    用指定的stream id与field进行声明
    backtype.storm.task.TopologyContext
    一个topologyContext会在bolt的prepare()和spout的open()方法中传递给bolt和spout。该类包括了组件在topology内的位置信息,如任务id,输入与输出等。


    List<Integer> backtype.storm.spout.SpoutOutputCollector.emit(List<Object> tuple)
    喷出一个tuple到默认的输出stream。此steam没有消息id,所以storm没有办法跟踪,因此对于这个tuple将永远不会调用ack()与fail()方法。


    List<Integer> backtype.storm.task.OutputCollector.emit(Tuple anchor, List<Object> tuple)
    喷射一个新的tuple到默认的抛锚在一个单一tuple的流上。


    Tuple

    backtype.storm.tuple.Tuple
    tuple是storm中的主要数据结构之中的一个,是喷口与闪电之间发送消息的基本单位。它是一个被命名的values的list,当中的每个value都能够是随意类型。
    backtype.storm.tuple.Fields.Fields(String... fields)
    Fields类的构造函数。形參列表为(String... fields)。
    调试中的一个tuple见图1.
    图1:调试中的一个tuple

    Spout

    backtype.storm.spout.ISpout
    这是spout类的核心接口。它有一下几种方法。

    void backtype.storm.spout.ISpout.open(Map conf, TopologyContext context, SpoutOutputCollector collector)
    当这个组件的task在集群中的一台worker内被初始化的时候,该函数被调用。它向spout提供了该spout运行的环境。
    void backtype.storm.spout.ISpout.close()
    当spout被关闭时此方法得到调用。
    void backtype.storm.spout.ISpout.activate()
    当spout从抑制状态变为激活状态时调用。

    void backtype.storm.spout.ISpout.deactivate()
    当spout被抑制时调用。此时它的nextTuple()方法不会被调用。
    void backtype.storm.spout.ISpout.nextTuple()
    当该方法被调用时,要求SpoutOutputCollector喷射tuple。


    void backtype.storm.spout.ISpout.ack(Object msgId)
    表示从此spout喷出的带有messageID的tuple已被全然处理。

    该方法的一个典型实现是把消息从队列中移走。避免被再次处理。


    void backtype.storm.spout.ISpout.fail(Object msgId)
    表示从此spout喷出的带有messageID的tuple未被全然处理。该方法的一个典型实现是把该消息再次放入队列,以便被再次发送。



    backtype.storm.topology.IRichSpout
    继承自ISpout与IComponent。

    backtype.storm.spout.SpoutOutputCollector
    用于spout的tuple喷射。注意与backtype.storm.task.OutputCollector的差别。
    List<Integer> backtype.storm.spout.SpoutOutputCollector.emit(List<Object> tuple)
    喷出一个tuple到默认的输出stream,此steam没有消息id,所以storm没有办法跟踪。因此对于这个tuple将永远不会调用ack()与fail()方法。


    Bolt

    backtype.storm.task.IBolt
    这是bolt类的核心接口。

    有下面几个方法:

    void backtype.storm.task.IBolt.prepare(Map stormConf, TopologyContext context, OutputCollector collector)
    当这个组件的task在集群中的一台worker内被初始化的时候。该函数被调用。它向bolt提供了该bolt运行的环境。

    void backtype.storm.task.IBolt.execute(Tuple input)
    处理输入的一个单一tuple。


    backtype.storm.topology.IRichBolt

    继承自IBolt与IComponent。


    backtype.storm.task.OutputCollector
    输出收集器用于发射来自IRichBolt的tuple。

    List<Integer> backtype.storm.task.OutputCollector.emit(Tuple anchor, List<Object> tuple)
    喷射一个新的tuple到默认的抛锚在一个单一tuple的流上。

    List<Integer> backtype.storm.task.OutputCollector.emit(String streamId, List<Object> tuple)

    向指定的stream中喷射数据。

    backtype.storm.topology.InputDeclarer.shuffleGrouping(String componentId)
    用于声明接收哪些spout或bolt的输出作为该bolt的输入。


    BoltDeclarer backtype.storm.topology.InputDeclarer.localOrShuffleGrouping(String componentId)

    用于声明接收哪些spout或bolt的输出作为该bolt的输入。
    BoltDeclarer backtype.storm.topology.InputDeclarer.fieldsGrouping(String componentId, String streamId, Fields fields)

    用于声明接收指定spout或bolt的指定stream的指定fields作为该bolt的输入。
    BoltDeclarer backtype.storm.topology.InputDeclarer.allGrouping(String componentId, String streamId)

    用于声明接收指定spout或bolt的指定stream作为该bolt的输入。


    样例


  • 相关阅读:
    【转】Pandas学习笔记(七)plot画图
    【转】Pandas学习笔记(六)合并 merge
    【转】Pandas学习笔记(五)合并 concat
    【转】Pandas学习笔记(四)处理丢失值
    【转】Pandas学习笔记(三)修改&添加值
    【转】Pandas学习笔记(二)选择数据
    17秋 SDN课程 第二次上机作业
    17秋 SDN课程 第三次上机作业
    17秋 SDN课程 第一次上机作业
    Ubuntu 14.04 安装sublime
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4915640.html
Copyright © 2020-2023  润新知