storm通过kafka传入数据的时候,有时候会出现并发修改的问题(这很可能是有static变量造成的),界面会出现spout fail的状况,此时可以通过设置参数进行一部分数据的抛弃。
这里写图片描述

builder.setSpout("Data", new SpoutA(args[1]), 1);

builder.setBolt("test", new BoltA(args[2]), 1).shuffleGrouping(
                "Data"); 

args[0]是拓扑名,args[1]是传入spout的数,紧跟着args[1],args[2]是传入bolt的数据,紧跟着args[2]
例如 storm jar test.jar storm.Topology s abc 10
args[0]=s,args[1]=abc,args[2]=10

下面就是修改spout和bolt的构造函数了

SpoutA中作如下修改

public SpoutA(String s) {
        str=s;
    }

BoltA中作如下修改

    public BoltA(String s) {
        x = Integer.parseInt(s);
    }

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐