Apache Nifi PutElasticsearch 可以永远等待填满批量大小吗?
Apache Nifi PutElasticsearch can wait forever to fill up batch size?
我正在尝试使用 apache-nifi.putElasticSearch 处理器将流式数据写入 elasticsearch,
PutElasticSearch 有 属性 命名为 "Batch Size",当我将此值设置为 1 时,所有事件都会尽快写入 elasticsearch。
但是这么低"batch size"显然负载高的时候不行。所以为了有一个合理的吞吐量我需要将它设置为 1000.
我的问题是,PutElasticSearch 是否会等到事件的批量大小可用。如果是,当有 999 个事件在处理器上等待时,它可以等待数小时。
我正在搜索以了解 logstash 如何在 elasticsearch 输出插件上做同样的工作。可能有一些基于时间的刷新逻辑(如果事件正在等待 ~2 秒刷新事件到 elasticsearch)..
你有什么想法吗?
编辑:我刚刚发现 logstash 实现了这个 https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-idle_flush_time :)
如何在 nifi 上实现相同的功能
根据代码,batch size
参数是传入队列中 FlowFile 的最大数量。
例如在值batch size = 1000
的情况下:
1/ 如果传入队列包含 1001 个流文件 - 一次事务中将只获取 1000 个。
2/ 如果传入队列包含 999 个流文件 - 999 个将在一个事务中使用。
一旦传入队列中有内容并且 nifi 中有可用线程,所有内容都会被处理。
参考文献:
我正在尝试使用 apache-nifi.putElasticSearch 处理器将流式数据写入 elasticsearch,
PutElasticSearch 有 属性 命名为 "Batch Size",当我将此值设置为 1 时,所有事件都会尽快写入 elasticsearch。
但是这么低"batch size"显然负载高的时候不行。所以为了有一个合理的吞吐量我需要将它设置为 1000.
我的问题是,PutElasticSearch 是否会等到事件的批量大小可用。如果是,当有 999 个事件在处理器上等待时,它可以等待数小时。
我正在搜索以了解 logstash 如何在 elasticsearch 输出插件上做同样的工作。可能有一些基于时间的刷新逻辑(如果事件正在等待 ~2 秒刷新事件到 elasticsearch)..
你有什么想法吗?
编辑:我刚刚发现 logstash 实现了这个 https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-idle_flush_time :)
如何在 nifi 上实现相同的功能
根据代码,batch size
参数是传入队列中 FlowFile 的最大数量。
例如在值batch size = 1000
的情况下:
1/ 如果传入队列包含 1001 个流文件 - 一次事务中将只获取 1000 个。
2/ 如果传入队列包含 999 个流文件 - 999 个将在一个事务中使用。
一旦传入队列中有内容并且 nifi 中有可用线程,所有内容都会被处理。
参考文献: