关于 Storm 的 Spout 组件的生命周期问题
大家好,刚刚开始学习 Storm
.
按照 《Storm入门》这篇文章写了个 WordCount
的程序。
其中的 Spout
的内容为:
...
public void nextTuple(){
String str;
try {
while((str =reader.readLine())!=null) {
this._collection.emit(new Values(str),str); //将从文件中读取到的行发射出去
}
} catch (IOException ex) {
throw new RuntimeException("error reading tuple");
}
}
这段程序的功能主要是从文件中读取行并发射出去。因为 nextTuple()
方法会被不停的调用,则不断的发射数据。但是每次调用 nextTuple
都会将这个文件从头开始重新读取一遍么?文件小还好,如果时一个 几个T的文件时应该怎么办呢?
对概念还是不太清楚,请大家讲解一下。谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
哦。。自己搞懂了
因为
reader
对象是在open()
方法中初始化的。所以初始化一次,之后每次调用nextTuple()
方法都不是从头读取一遍,而是从当前位置开始读取。