我有一个Storm喷口,可以从日志文件中读取。因此,当我在本地测试代码时,它工作得很好,因为我在运行作业时传递了运行时参数。
public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
collector_out = collector;
try {
this.context = context;
this.filereader = new FileReader(conf.get("logfile").toString());
} catch (FileNotFoundException e) {
throw new RuntimeException("Error reading file ["+conf.get("logfile")+"]");
}
}
public void nextTuple() {
try {
br = new BufferedReader(filereader);
line = br.readLine();
while(line != null){
count++;
collector_out.emit(new Values(line));
Thread.sleep(2);
line = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
finally{
completed = true;
}
}
因此,如果有任何想法如何让它进行,这将是一个很大的帮助。
在群集模式下,当您在open方法中读取文件时,每个节点都转到其本地路径,并且可能并不是所有节点中都有该文件。
解决此问题的好方法是在集群中安装nfs系统,在集群节点之间共享一个目录,并将文件放入该目录。我有一个像你一样的喷口是这样工作的。
问题内容: 我需要编写一个风暴喷口以从端口读取数据。想知道在逻辑上是否可行。 考虑到这一点,我设计了一个简单的拓扑结构,该拓扑结构设计为只有一个喷嘴和一个螺栓。喷口将收集使用wget发送的HTTP请求,螺栓将显示请求-就是那样。 我的喷口结构如下: 我也实现了其余方法。 将其转换为拓扑并运行它时,发送第一个请求时出现错误: java.lang.RuntimeException:java.io.No
问题内容: 我一周前开始使用Java,现在我想在窗口中插入一个图像。无论我尝试什么,我都会在Eclipse中继续使用它: javax.imageio.IIOException:无法读取输入文件! } 我认为代码很容易解释。我试图解决这个问题 我想做的是一个桌面程序,我的源代码存储如下:training / src / graphics / Window training / src / src /
问题内容: 我对Logstash有一个奇怪的问题。我正在提供一个日志文件作为logstash的输入。配置如下: 我已经在运行elasticsearch服务器并验证是否正在使用curl查询接收数据。问题是,当输入为时,没有数据被接收。但是,如果我将输入更改为以下内容,它将顺利发送所有输入数据: 我不明白我要去哪里错了。有人可以看看这个吗? 问题答案: 您应该在文件部分下设置start_positio
问题内容: 这是我的第一篇文章,请问如果我做错了什么。直到我尝试从源包中读取图像,此代码才能正常运行。但是现在它无法读取任何图像。我究竟做错了什么?还是关于日食的事? 例外: 谢谢… 问题答案: 改变了,如果你使用的是Windows。 更跨平台的方法将替代 对于每对。 进一步了解File api文档 编辑 (对不起,我没有读过此行) 这段代码运行正常,直到我尝试从源包中读取图像 为了从jar包中获
这里可能发生了同样的事情:错误backtype.storm.util-Async循环死亡!BufferUnderFlowException:null,但我将添加一个完整的堆栈跟踪和一些更多的上下文。 Storm版本-9.3 Storm-Kafka版本-9.3 Kafka版本-0.8.2-beta 堆栈跟踪: Spout代码(注意,出于调试目的,我使用的是一个静态定义的分区映射,只有一个代理):
问题内容: 我不知道为什么这不起作用,但是程序说它无法读取输入文件。顺便说一下,这也在Ubuntu中运行: 这是示例代码: 该目录也位于程序的bin文件夹和src文件夹中。 问题答案: 如果您改为从资源流中获取图像怎么办?例如,