Apache nifi Nifi:MergeRecord不';t等待并将json文件分组到一个批中
我遇到了Apache NiFi的问题。 我有大约100.000k+json文件,看起来像:Apache nifi Nifi:MergeRecord不';t等待并将json文件分组到一个批中,apache-nifi,Apache Nifi,我遇到了Apache NiFi的问题。 我有大约100.000k+json文件,看起来像: [ { "client_customer_id" : 8385419410, "campaign_id" : "11597209433", "resourceName" : "customers/8385419410/adGroupAds/118322191652~479093457035",
[ {
"client_customer_id" : 8385419410,
"campaign_id" : "11597209433",
"resourceName" : "customers/8385419410/adGroupAds/118322191652~479093457035",
"campaign" : "11597209433",
"clicks" : "0",
"topImpressionPercentage" : 1,
"videoViews" : "0",
"conversionsValue" : 0,
"conversions" : 0,
"costMicros" : "0",
"ctr" : 0,
"currentModelAttributedConversions" : 0,
"currentModelAttributedConversionsValue" : 0,
"engagements" : "0",
"absoluteTopImpressionPercentage" : 1,
"activeViewImpressions" : "0",
"activeViewMeasurability" : 0,
"activeViewMeasurableCostMicros" : "0",
"activeViewMeasurableImpressions" : "0",
"allConversionsValue" : 0,
"allConversions" : 0,
"averageCpm" : 0,
"gmailForwards" : "0",
"gmailSaves" : "0",
"gmailSecondaryClicks" : "0",
"impressions" : "2",
"interactionRate" : 0,
"interactions" : "0",
"status" : "ENABLED",
"ad.resourceName" : "customers/8385419410/ads/479093457035",
"ad.id" : "479093457035",
"adGroup" : "customers/8385419410/adGroups/118322191652",
"device" : "DESKTOP",
"date" : "2020-11-25"
} ]
在将其逐个保存到数据库之前,我想在一个json中创建包含1000-10000个元素的批处理,然后将其保存到DB以提高速度。
MergeRecord
设置:
我期望的是什么:MergeRecord
等待一段时间将json分组,创建一个json中包含1000-10000个元素的批处理,然后将此批处理发送到PutDatabaseRecord
处理器
实际行为:MergeRecord
立即将json逐个发送到PutDatabaseRecord
,而不进行分组和连接。
1/10流文件将包含多个json文件作为一个文件,正如您在屏幕截图上看到的大小一样。但处理器的这些设置似乎并不适用于所有文件:
我不明白哪里出了问题<代码>合并记录设置还是json文件?这是一种非常缓慢的行为,我的数据(1.5 Gb)可能会在一天内存储。我复制这一点的唯一方法是为每个流文件使用一个随机的table.name,这将导致每个文件都位于其自己的存储箱中,快速填充“最大存储箱数”,并导致每个文件作为单独的流文件发送。如果你有超过10张桌子,我会增加设置 我唯一的另一个建议是处理MergeRecord处理器的运行计划和运行持续时间(在scheduling选项卡上)。例如,如果将运行计划设置为2分钟,处理器将每两分钟运行一次,并尝试合并队列中尽可能多的文件