首页 > 解决方案 > 如何处理 Nifi 中的小文件问题

问题描述

我目前在 Nifi 的流程就像

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

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

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

曾尝试使用 Mergecontent ,但效果不佳。

谢谢大家

标签: apache-nifi

解决方案


您可以在JoltTransfromJson 处理器和之后使用MergeRecord 处理器

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

使用Max Bin Age属性作为通配符来强制合并符合条件的 bin

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

通过使用这个过程,我们正在处理大量的记录,最终提高了将数据存储到 HBase 中的性能。

流动:

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

有关合并记录配置记录阅读器配置,请参阅这些链接


推荐阅读