【问题标题】:Processing large text files through Nifi returns null通过 Nifi 处理大文本文件返回 null
【发布时间】:2018-05-10 01:55:34
【问题描述】:

我遇到了一个很奇怪的问题。

我目前有一个 nifi 流,它使用一个 getfile 处理器来抓取一个放在目录中的日志文件。从那里,它被传递到一个自定义处理器,文件在 session.read 内部使用 BufferedReader 类进行处理。我做了所有必要的处理并传递流文件。简单的东西

这对于中等大小的文件非常有效,但是当我尝试处理大型日志文件(大约 2.5GB)时,我开始在尝试从缓冲读取器调用 readLine() 时返回 null。似乎缓冲阅读器没有打开/读取非常大的文件。

关于解决问题的任何建议,以找出为什么这种行为发生在较大的文件而不是较小的文件?

【问题讨论】:

  • NiFi 不会根据流文件内容的大小做任何不同的事情。
  • 您应该考虑使用测试框架为您的处理器进行测试并分析其行为。如果您共享自定义处理器的代码,可能会出现问题,但如果不知道其功能和/或使用的库,则很难诊断。
  • 您是否尝试在处理文件之前对其进行拆分?
  • @ÓscarAndreu 不,我没有。我正在尝试按原样读取文件
  • @crazyCoder 我用一些适合我的技巧创建了一个回复,希望对您有所帮助。

标签: apache-nifi


【解决方案1】:

尝试将文件拆分为更小的部分,例如每个流文件 1000 行,您可以使用 SplitText 组件执行此操作。 我过去遇到过这个问题,并使用这种方法解决了。 也可能发生 SplitText 阻止 NiFi,在这种情况下,您可以连接多个 SplitText 以拆分为 100000 行 -> 10000 行 -> 1000 行,使用此技巧可以避免此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2015-11-14
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多