Storm Tick 元组

栏目: 编程工具 · 发布时间: 7年前

内容简介:在某些情况下,Bolt 在执行某些操作之前需要将数据缓存几秒钟,例如每隔5秒清理一次缓存或在单个请求中将一批记录插入数据库。Tick 元组是系统生成的(Storm生成的)元组,我们可以在每个 Bolt 级别配置它们。我们可以在编写 Bolt 时在代码中配置 Tick 元组。我们需要在 Bolt 中覆盖以下方法以启用 Tick 元组:

在某些情况下,Bolt 在执行某些操作之前需要将数据缓存几秒钟,例如每隔5秒清理一次缓存或在单个请求中将一批记录插入数据库。

Tick 元组是系统生成的(Storm生成的)元组,我们可以在每个 Bolt 级别配置它们。我们可以在编写 Bolt 时在代码中配置 Tick 元组。

我们需要在 Bolt 中覆盖以下方法以启用 Tick 元组:

@Override
public Map<String, Object> getComponentConfiguration() {
  Config conf = new Config();
  int tickFrequencyInSeconds = 10;
  conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, tickFrequencyInSeconds);
  return conf;
}

在上面的代码中,我们将 Tick 元组配置为10秒。现在,Storm 会每10秒钟生成一个 Tick 元组。

接下来创建 isTickTuple 方法来确定我们收到的元组是 Tick 元组还是正常元组:

protected static boolean isTickTuple(Tuple tuple) {
    return tuple.getSourceComponent().equals(Constants.SYSTEM_COMPONENT_ID)
        && tuple.getSourceStreamId().equals(Constants.SYSTEM_TICK_STREAM_ID);
}

Tick 元组会与你正在处理的其他正常元组混合在一起,所以需要我们判断元组的类型。

最后,在 Bolt 的 execute 方法中添加如下代码来判断元组的类型进行处理:

@Override
public void execute(Tuple tuple, BasicOutputCollector collector) {
    try {
        if (isTickTuple(tuple)) {
           // do tick tuple
        }
        else {
          // do normal tuple
        }
        // do your bolt stuff
    } catch (Exception e) {
        LOG.error("Bolt execute error: {}", e);
        collector.reportError(e);
    }
}

现在你的 Bolt 每10秒就会收到一个 Tick 元组。

如果希望 Topology 中的每个 Bolt 都每隔一段时间做一些操作,那么可以定义一个 Topology 全局的 Tick,同样是设置 Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS 的值:

Config conf = new Config();
conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, 10);

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python语言程序设计基础(第2版)

Python语言程序设计基础(第2版)

嵩天、礼欣、黄天羽 / 高等教育出版社 / 2017-2 / 39

本书提出了以理解和运用计算生态为目标的Python语言教学思想,不仅系统讲解了Python语言语法,同时介绍了从数据理解到图像处理的14个Python函数库,向初学Python语言的读者展示了全新的编程语言学习路径。 全书一共设计了25个非常具有现代感的实例,从绘制蟒蛇、理解天天向上的力量到机器学习、网络爬虫,从文本进度条、统计名著人物重要性到图像手绘效果、雷达图绘制,绝大多数实例为作者原创......一起来看看 《Python语言程序设计基础(第2版)》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具