Nifi 删除hdfs上的历史数据

本文介绍了如何利用Nifi配合数据库管理,高效地删除HDFS上按照日期分区的历史数据。通过ExecuteSQL获取待删除表信息,PartitionRecord添加表名属性,设置删除时间表达式,结合UpdateAttribute与DeletePath进行路径指定,实现自动化删除,提高数据管理灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前通过 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号,那么time就是20190401。

这样删除的表名 和 分区值 拿到手之后,就要设定删除路

### 配置 Apache NiFi数据存储到 HDFS 为了实现将数据通过 Apache NiFi 存储至 HDFS 的目标,需设置特定处理器并确保其参数配置正确。具体而言,在构建用于此目的的数据流时,应考虑以下几个方面: #### 1. 创建数据流 在 NiFi 中设计一条新的数据流来负责从源头获取数据直至最终写入 HDFS 文件系统的过程。通常情况下,这条路径会涉及多个组件协作完成任务。 - **Kafka Consumer**:作为起点之一,可以从指定的 Kafka 主题中拉取消息[^1]。 ```xml <property name="Topic Name">your_topic_name</property> ``` - **Processor (Data Cleaning)** :在此阶段可以加入各种类型的处理器来进行必要的预处理工作,比如移除符合条件的信息条目或是转换字段格式等操作。 #### 2. 设置 PutHDFS 处理器 要使数据成功上传到 HDFS 上,则需要添加 `PutHDFS` 类型的处理器,并对其进行详细的属性设定以匹配目标环境的要求。 - **Core Site XML 和 Hdfs Site XML**: 这两个文件包含了访问 Hadoop 分布式文件系统的必要配置信息。可以通过 NiFi 参数上下文中定义这些资源的位置或直接将其嵌入到 `PutHDFS` 的相应选项里[^3]。 ```properties nifi.hdfs.configuration.core.site=/path/to/core-site.xml nifi.hdfs.configuration.hdfs.site=/path/to/hdfs-site.xml ``` - **Directory Path and File Name Generation Strategy**: 定义好输出目录结构以及如何命名即将保存下来的文件。支持静态字符串、表达式语言等多种模式供选择。 ```java // Example of using expression language to generate dynamic file names based on flowfile attributes. ${filename}-${now():format('yyyyMMddHHmmssSSS')}.txt ``` #### 3. 测试与验证 最后一步是在实际环境中测试整个流程是否按预期运行。这可能涉及到发送一些样例消息给 Kafka 并观察它们能否顺利抵达预定位置;同时也要留意日志记录中的任何异常提示以便及时调整优化方案[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值