我有一个非常奇怪的问题。
我目前有一个nifi流,它使用getfile处理器来获取放在目录中的日志文件。从那里,它传递给自定义处理器,在该处理器中使用BufferedReader类在session.read内处理文件。我做了所有必要的处理并传递了流文件。简单的东西
这适用于中等大小的文件但是当我尝试处理大型日志文件(大约2.5GB)时,我尝试从缓冲读取器调用readLine()时返回null。似乎bufferedreader没有打开/读取非常大的文件。
有关要解决问题的区域的任何建议,以找出为什么更大的文件而不是更小的文件发生这种行为?
答案 0 :(得分:0)
尝试将文件拆分成较小的部分,例如每个流文件1000行,您可以使用SplitText组件执行此操作。 我过去遇到过这个问题,并且使用这种方法解决了这个问题。 也可以发生SplitText块NiFi,在这种情况下你可以连续几个SplitText分割成100000行 - > 10000行 - > 1000行,有了这个技巧就可以避免这个问题。