Apache nifi Nifi—将庞大的json记录数组处理为单个记录

Apache nifi Nifi—将庞大的json记录数组处理为单个记录,apache-nifi,Apache Nifi,我使用的是一个invoke HTTP处理器,它提供一个JSON对象数组。响应的大小介于2-3 GB之间。回答看起来像这样- [ { "id": 17, "name": "ONE by AOL: Video" }, { "id": 63, "name": "Adform" } --- 稍后在下游,我希望一次使用每个JSON对象,因为我需要对其应用一些过滤器,然后将其保存在数据库中。 想知道splitjson是否是合适的处理器吗?目前,即使我在bootstrap.conf文件中给出

我使用的是一个invoke HTTP处理器,它提供一个JSON对象数组。响应的大小介于2-3 GB之间。回答看起来像这样-

[
{
  "id": 17,
  "name": "ONE by AOL: Video"
},
{
  "id": 63,
  "name": "Adform"
} ---
稍后在下游,我希望一次使用每个JSON对象,因为我需要对其应用一些过滤器,然后将其保存在数据库中。
想知道splitjson是否是合适的处理器吗?目前,即使我在bootstrap.conf文件中给出了5GB,在队列配置中也给出了2gb,使用splitjson时仍会出现内存不足异常。如果这是唯一的选择,我可以选择更多的内存

您应该使用记录处理器,以避免需要拆分。您可以使用QueryRecord进行筛选,并将DatabaseRecord插入数据库。

这里有一个
QueryRecord
处理器。谢谢,我正在研究它。您的意思是在调用HTTP后立即使用QueryRecord?无论您在何处需要进行筛选,我要做的一个筛选是从name字段提取一个子字符串。例如,对于这个“名称”:“Livescore Champions 2017-2018-Android(com.LivescoreChampions20172018.pro)”我必须提取com.LivescoreChampions20172018.pro的值。我在查询记录处理器-选择子字符串(name,CHARINDEX('Android(',name),CHARINDEX('),name)-CHARINDEX('Android(',name)+Len Len中进行了这个查询作为FLOWFILE中的名称,其中的名称类似于“%Android(%”,但表示没有找到与函数charindexd匹配的名称您知道查询记录处理器支持的SQL版本吗,以及我们可以执行的SQL查询级别吗?顺便说一句,谢谢您的帮助