当前位置: 首页 > 知识库问答 >
问题:

无法读取Storm喷口中的输入文件

燕意蕴
2023-03-14

我有一个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;
    }
}

因此,如果有任何想法如何让它进行,这将是一个很大的帮助。

共有1个答案

汪建德
2023-03-14

在群集模式下,当您在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文件夹中。 问题答案: 如果您改为从资源流中获取图像怎么办?例如,