Nifi 合并Hdfs上的文件
在使用Nifi的过程中,有些数据是每分钟都会通过 数据库导入到hdfs上。这样就不可避免的产生了许多小文件。小文件过多不利于数据的存储。
因此使用Nifi 将小文件 合并掉。
流程上,使用 ListHDFS 这个控件 获取目录下所有的hdfs小文件。
因为通过nifi写入到hdfs上的文件都是parquet格式。
下一步使用 FetchParquet 读取 parquet的文件内容。
然后 将这份结果转发到两处,一是 给 DeleteHDFS ,将读取到的hdfs文件删除。二是 给MergeRecord。
合并文件。
MergeRecord中的配置如下
设置好 合并的最大条数 和 最大内容。延迟 1mins。最多20个中间文件,其中务必设置好 Correlation Attribute Name。
这个属性是合并时控制的分组属性,只有 path相同的文件才会合并,避免不同目录下的小文件合并对数据的干扰。
最后调用 PutParquet 将结果写入到hdfs上。