2017-06-06 16 views
0

我嘗試流數據寫入到與Apache的nifi.putElasticSearch處理器elasticsearch,Apache Nifi PutElasticsearch可以永遠等待填滿批量大小?

PutElasticSearch有一個名爲「批量大小」,當我這個值設置爲1的所有事件都寫入儘快elasticsearch財產。

但是如此低的「批量大小」在負載高時顯然不起作用。因此,爲了有一個合理的吞吐量,我需要將它設置爲1000.

我的問題是,PutElasticSearch是否等待可用事件的批量大小。如果是,則在處理器上等待999個事件時可以等待數小時。

我在尋找理解logstash如何在elasticsearch輸出插件上做同樣的工作。可能會有一些基於時間實施的沖洗邏輯(如果事件正在等待~2秒的沖洗事件,以彈性搜索)..

你有什麼想法?


編輯:我剛剛發現logstash實現這個https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-idle_flush_time :)

我怎樣才能做到在nifi

回答

3

相同的功能根據代碼的batch size參數是從傳入FlowFiles的最大數量隊列。

例如在值batch size = 1000情況下:

1 /如果傳入隊列1001個包含流文件 - 只有1000將在一個事務中作出。

2 /如果傳入隊列包含999個流文件 - 999將在一個事務中進行。

一旦進入隊列中有東西,並且在nifi中有可用的線程,一切都將被處理。

引用:

PutElasticsearch.java

ProcessSession.java