之前通过 nifi 每隔几分钟将数据库中的数据 写入到 hdfs上,不过后面数据中小文件过多,因为需要删除历史的数据,所幸写入hdfs的时候都是 table_name/分区键 写入的。因此只要删除历史的分区文件夹就可以完成数据的删除操作了。
ex:
/user/hive/warehouse/zhong/ge_sys_person/pt=20190203/....
/user/hive/warehouse/zhong/ge_sys_person/pt=20190204/....
.....
/user/hive/warehouse/zhong/ge_sys_person/pt=20190403/....
现在需要删除20190203这个文件夹的数据。
为了后期的便于管理,先将要删除的表写入到数据库中。
然后通过ExecuteSQL 这个控件将要删除的表 读取到nifi中。通过PartitionRecord将 要删除的表的名称 添加到Flowfile的Attribute中。
接下来就是 设定 删除的表的分区值是多少。
time:${now():minus(${retainDays:multiply(86400000)}):format("yyyyMMdd")}
其中的retainDays 是保留的天数。这里是4.这样如果今天是4月5号&#