Jpf*_*Jpf 6 journal data-ingestion apache-nifi
我正在使用 Apache NiFi 来摄取和预处理一些 CSV 文件,但是在长时间运行时,它总是失败。错误总是一样的:
FlowFile Repository failed to update
Run Code Online (Sandbox Code Playgroud)
在日志中搜索,我总是看到这个错误:
2018-07-11 22:42:49,913 ERROR [Timer-Driven Process Thread-10] o.a.n.p.attributes.UpdateAttribute UpdateAttribute[id=c7f45dc9-ee12-31b0-8dee-6f1746b3c544] Failed to process session due to org.apache.nifi.processor.exception.ProcessException: FlowFile Repository failed to update: org.apache.nifi.processor.exception.ProcessException: FlowFile Repository failed to update
org.apache.nifi.processor.exception.ProcessException: FlowFile Repository failed to update
at org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:405)
at org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:336)
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:28)
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1165)
at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:203)
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: **Cannot update journal file ./flowfile_repository/journals/8772495.journal because this journal has already been closed**
at org.apache.nifi.wali.LengthDelimitedJournal.checkState(LengthDelimitedJournal.java:223)
at org.apache.nifi.wali.LengthDelimitedJournal.update(LengthDelimitedJournal.java:178)
at org.apache.nifi.wali.SequentialAccessWriteAheadLog.update(SequentialAccessWriteAheadLog.java:121)
at org.apache.nifi.controller.repository.WriteAheadFlowFileRepository.updateRepository(WriteAheadFlowFileRepository.java:300)
at org.apache.nifi.controller.repository.WriteAheadFlowFileRepository.updateRepository(WriteAheadFlowFileRepository.java:257)
Run Code Online (Sandbox Code Playgroud)
让我相信根本原因是 Nifi 无法更新日志文件 ./flowfile_repository/journals/8772495.journal 因为该日志已经关闭**,如日志文件所示。
我该如何解决这个问题?
谢谢!
如果 NiFi 在写入日志文件时遇到问题,则需要检查一些事项。
您是否从 CSV 中读取较大(大于 64kb)的字段并尝试将它们分配给属性?您可能需要考虑将 CSV 中的特定字段作为单独的流文件进行处理,并稍后将其与属性进行匹配。请参阅此邮件列表讨论以获取更多信息。
您是否根据管理指南中列出的最佳实践检查了 NiFi 的配置?我还建议您了解每个Flowfile 存储库设置。它将使您能够提出更有针对性的问题。
可能值得更新 JVM 设置以允许处理更大的文件。查看Hortonworks 上的这篇文章,详细介绍了高性能系统的最佳实践。
为了解决这个问题,您可能需要调整一些东西。该流程是否以有效的方式处理 CSV?NiFi 是否有足够的内存来处理数据?将 CSV 文件作为记录处理是否更合适?如果这个概念不熟悉,请查看这篇介绍NiFi 中记录处理的文章。我希望其中一些资源可以帮助您更接近解决方案。如果您有后续问题,请告诉我。
| 归档时间: |
|
| 查看次数: |
6497 次 |
| 最近记录: |