apache-nifi - 如果nifi写入数据失败怎么办?
问题描述
如果 nifi 正在使用 PutHDFS 或 PutFile 写入磁盘,并且在写入 10 个块中的 4 个块后,它被杀死或进程关闭。恢复后,nifi 会从第 5 个块开始写入还是重新写入整个文件以创建重复项?
解决方案
当处理器执行时,NiFi 中正在执行事务......
- 会话开始
- 获取流文件
- 执行的操作
- 流文件被传输或删除
- 会话已提交
在您的 PutHDFS 或 PutFile 示例中,对 HDFS 或本地文件系统的写入操作将是上面的“执行的操作”部分。
如果 NiFi 在会话提交之前的那一点崩溃,那么当 NiFi 重新启动时,流文件仍将位于同一队列中,处理器将尝试再次处理它。
外部系统(即本例中的 HDFS 或本地文件系统)的状态取决于该外部系统如何处理写入数据。如果外部系统有一些事务机制,那么如果在外部系统中提交事务之前发生崩溃,则可能看不到任何数据,但在文件系统的情况下,可能存在部分写入的文件。
在 HDFS 处理器中,它会写入一个名称以“.”开头的临时文件。所以很可能该文件仍保留在 HDFS 中,这取决于处理器如何处理具有相同名称的现有文件。通常处理器中有一个策略属性,您可以在其中选择现有文件的“覆盖”或“失败”等选项。
推荐阅读
- java - 如何从 zip 存档中的内容检测文件类型?
- angular - 我的 Angular 8 应用程序在 IE 浏览器中显示空白页面
- r - 没有名为“外国”的包裹
- sql - T-SQL - 获取每个 ID 的最后 30 行
- react-native - React Native Bottom Tab Navigator - 图标不显示
- oracle - 加载 csv 并写入带有个别错误的不良记录
- html - 在自身上添加背景图像?
- android - 在设置中进行选择时播放声音(Android 应用程序)
- android - Flutter由于源代码错误无法编译
- java - Intellij IDEA 在调试时获取远程日志