在构造函数中,只需分配变量即可。尝试在prepare方法中实例化ServerSocket,不要在构造函数中编写任何新的…。并重命名变量,您有两个sc变量。
public class ProxySpout extends baseRichSpout{ int port; public ProxySpout(int port){ this.port=port; } @Override public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) { //new ServerSocket } @Override public void nextTuple() { } @Override public void declareOutputFields(OutputFieldsDeclarer declarer) { }}
如果将其放在prepare方法中,则仅在已部署spout时调用它,因此不需要序列化,并且在spout的整个生命周期中仅调用一次,因此它的效率不会很低。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)