gpt4 book ai didi

java - 在多个数据库编写器 bolt /数据库查询路由器之间平均分割 Storm 流?

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:31 24 4
gpt4 key购买 nike

如果有一个 Storm 集群连接到带有 n 个查询路由器的 MongoDB 集群,那么创建一个“SplitStreamBolt”将流平均分割为 n 个流并使用特定查询连接到每个流是明智的吗连接路由器吗?

如何定义这样的 SplitStreamBolt?有没有更好的方法来以这种方式分割流?

基本尝试:

public static class SplitStreamBolt extends BaseRichBolt {
private OutputCollector _collector;

private int cycleStream = 1;

@Override
public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
_collector = collector;
}

@Override
public void execute(Tuple input) {
if(cycleStream == 1)
{
_collector.emit("mongoStream1", input, new Values(1));
cycleStream = 2;
}
else
{
_collector.emit("mongoStream2", input, new Values(2));
cycleStream = 1;
};
_collector.ack(input);
}

@Override
public void declareOutputFields(final OutputFieldsDeclarer outputFieldsDeclarer) {
outputFieldsDeclarer.declareStream("mongoStream1", new Fields("stream"));
outputFieldsDeclarer.declareStream("mongoStream2", new Fields("stream"));
}
}

我必须声明新字段吗?

最佳答案

我认为在你的情况下,“随机分组”足以在 MongoDB 编写器之间划分元组。事实上,尽管元组是随机发出的,但文档中说:

Shuffle grouping: Tuples are randomly distributed across the bolt's tasks in a way such that each bolt is guaranteed to get an equal number of tuples.

关于java - 在多个数据库编写器 bolt /数据库查询路由器之间平均分割 Storm 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23853464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com