如何在Nifi中处理小文件问题

时间:2018-09-21 19:19:36

标签: apache-nifi

我目前在Nifi中的流动就像

ListHDFS->FetchHDFS->SplitText->JoltransformJSon->PUTHBaseJSON. 

每小时输入的JSON文件最大为10GB。 单个文件大小为80 -100MB。

Splittext&JoltTransform->转换文本并将其作为4KB文件发送。因此,每小时的工作需要50到1.20分钟才能完成工作流程。我怎样才能使它更快。处理用例的最佳流程是什么?

尝试使用Mergecontent,效果不好。

谢谢所有

1 个答案:

答案 0 :(得分:3)

您可以在 JoltTransfromJson Processor

之后使用 MergeRecord处理程序

保留您的最大记录数,以使流文件有资格合并到单个流文件中。

使用 Max Bin Age (最大垃圾箱年龄)属性作为通配符,以强制符合条件的垃圾箱被合并

然后使用面向记录的HBase处理器,即 PutHBaseRecord 处理器,并配置您的 Record Reader控制器服务(JsonTree Reader)以读取传入流程文件并调整Batch size属性值以获得最佳性能。

通过此过程,我们正在处理记录块,最终提高了将数据存储到HBase中的性能。

流量:

ListHDFS->FetchHDFS->SplitText->JoltransformJSon->MergeRecord ->PUTHBaseRecord

请参阅Merge Record configsRecord Reader configs的这些链接