alibaba / jstorm

Enterprise Stream Process Engine
http://jstorm.io
Apache License 2.0
3.91k stars 1.81k forks source link

请问IBasicSpout 和IBatchSpout的区别是什么? #548

Closed michelle-q closed 7 years ago

michelle-q commented 7 years ago

最近用了一下IBasicSpout和IBatchSpout处理数据,但是不知道二者的区别是什么。只是发现使用IBatchSpout,是可以通过batchId,在下游的bolt中区分数据然后做逻辑处理保存hbase,IbasicSpout 是正常每条发送到下游bolt,这里我使用了线程名称区分了数据,但是有一个问题,当我把bolt的并行度设置为2时,处理的数据都是双份的。而使用IBatchSpout的方式,bolt并行度是2,处理的数据是正常的。

longdafeng commented 7 years ago

IBasicSpout 是不对外使用,是内部使用的接口

IBatchSpout 是minibatch 的一套api 接口, 你参考例子https://github.com/alibaba/jstorm/tree/master/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch