Nifi 处理器批量插入 - 处理失败
Nifi processor batch insert - handle failure
我目前正在编写 ElasticSearch Nifi 处理器。对 ES 的单独插入/写入不是最优的,而是首选批处理文档。什么被认为是 Nifi 处理器中跟踪(批处理)文档(FlowFiles)的最佳方法,以及何时将它们批处理到一定数量?我最关心的部分是ES是否不可用、宕机、网络分区等导致批量无法成功。问题的要点是,假设 Nifi 具有用于排队/背压等的内容存储。是否有一种首选方法可以使用它来确保在目的地关闭时不会丢失 FlowFiles?也许我应该看看另一个处理器作为例子?
我查看了 Mongo 处理器、Merge 等,试图了解在处理器内部进行批处理的首选方法,但似乎找不到任何具体的方法。如有任何建议,我们将不胜感激。
很有可能我忽略了 Nifi 中内置的一些基本功能。我对这个平台还是很陌生。
谢谢!
很好的问题和一个很常见的模式。这就是为什么我们有 ProcessSession 的概念。它允许您将零个或多个东西发送到外部端点,并且只有在您知道它已被收件人确认后才提交。从这个意义上说,它提供了至少一次语义。如果您使用的协议支持两阶段提交样式语义,您可以非常接近难以捉摸的恰好一次语义。您在这里询问的大部分细节将取决于目标系统 API 和行为。
apache 代码库中有一些示例揭示了执行此操作的方法。一种方法是,如果您可以在推送到目标系统之前生成合并的事件集合。取决于其API。我认为 PutMongo 和 PutSolr 就是这样运作的(尽管这方面的专家需要权衡)。可以在 PutSQL 中找到一个可能更像您正在寻找的示例,它对流文件的批次进行操作以在单个事务中发送(在目标数据库上)。
会关注这里,但可以在 users@nifi.apache.org
获得更大的 NiFi 群组的关注
谢谢
乔
我目前正在编写 ElasticSearch Nifi 处理器。对 ES 的单独插入/写入不是最优的,而是首选批处理文档。什么被认为是 Nifi 处理器中跟踪(批处理)文档(FlowFiles)的最佳方法,以及何时将它们批处理到一定数量?我最关心的部分是ES是否不可用、宕机、网络分区等导致批量无法成功。问题的要点是,假设 Nifi 具有用于排队/背压等的内容存储。是否有一种首选方法可以使用它来确保在目的地关闭时不会丢失 FlowFiles?也许我应该看看另一个处理器作为例子?
我查看了 Mongo 处理器、Merge 等,试图了解在处理器内部进行批处理的首选方法,但似乎找不到任何具体的方法。如有任何建议,我们将不胜感激。
很有可能我忽略了 Nifi 中内置的一些基本功能。我对这个平台还是很陌生。
谢谢!
很好的问题和一个很常见的模式。这就是为什么我们有 ProcessSession 的概念。它允许您将零个或多个东西发送到外部端点,并且只有在您知道它已被收件人确认后才提交。从这个意义上说,它提供了至少一次语义。如果您使用的协议支持两阶段提交样式语义,您可以非常接近难以捉摸的恰好一次语义。您在这里询问的大部分细节将取决于目标系统 API 和行为。
apache 代码库中有一些示例揭示了执行此操作的方法。一种方法是,如果您可以在推送到目标系统之前生成合并的事件集合。取决于其API。我认为 PutMongo 和 PutSolr 就是这样运作的(尽管这方面的专家需要权衡)。可以在 PutSQL 中找到一个可能更像您正在寻找的示例,它对流文件的批次进行操作以在单个事务中发送(在目标数据库上)。
会关注这里,但可以在 users@nifi.apache.org
获得更大的 NiFi 群组的关注谢谢 乔