Apache NIFI 安装过程可参考《一篇学会摆设NIFI》中文文档地点 https://nifichina.github.io/ 内容很是具体,大家可以参考。没有中文文档的可查看官方文档 https://nifi.apache.org/documentation/v1/。我是 NIFI 新手,一些配置大概处置惩罚器本身的利用大概存在一些标题,发现的小伙伴儿请不吝见教。
1.实例
本次分享的实例是读取指定目次下的文件内容,格式化后发送到 Kafka, 整体流程图如下:
2.步调
2.1 测试数据准备
本次测试的是txt文件,NIFI 提供了CSV、Excel、JSON等类型的 Reader 但是唯独没有txt类型的,由于业务需要,本次就测试这类文件。文件内容如下:
2.2 GetFile
GetFile 处置惩罚器从有读取权限的目次下获取 FlowFiles,主要配置为 Input Directory。
里边的具体设置可根据业务需要进行配置。
2.3 SplitText
SplitText 处置惩罚器回按行界限将文本文件拆分为多个较小的文本文件,主要配置为 Line Split Count每个文件有几行数据,为什么要设置为 1后边的步调会有答案。
假如 txt 文件有 header 就需要设置 Header Line Count以忽略 header 行。执行结果:
2.4 ExtractText
ExtractText 处置惩罚器的中文《阐明文档》,该处置惩罚器利用正则表达式,匹配流文件中的内容,并将匹配成功的内容输出到属性中;假如正则匹配到多个结果,默认只取第一个结果;匹配成功则流文件路由 matched,没有匹配则到 unmatched,这就是为什么 SplitText Line Split Count被设置为1了。
这个处置惩罚器需要利用正则表达式,需要一些学习的成本,这里不再赘述,用到的表达式如下:
- 匹配 id 的 15 位数字 \d{15}
- 匹配 number 的 14 位数字 (?<=\d{15}\s)\d{14}(前边是一个非获取匹配表达式)
- 匹配 time 的年月日空格和时分秒 \d{1,4}-\d{1,2}-\d{1,2} ([01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d(这个匹配并不严谨,年月份有大概是错误的数值)
这个应该算是本次流程里比较难配置的处置惩罚器了。执行完后可以查看 FlowFile 的属性,可以看到匹配到的 id.0,number.0,time.0,这里的 .0暂时不知道如何去掉。
2.5 AttributesToJSON
AttributesToJSON 处置惩罚器将输入流文件属性转成JSON表现形式。具体配置可参考处置惩罚器的中文利用《阐明》。主要配置为 Attributes List,上个实例也用到了,这次才发现上次利用时配置的 Attributes Regular Expression是无效的,它的利用方法后续会进行探索。
步调执行后的结果为:
2.6 PublishKafkaRecord_2_6
PublishKafkaRecord_2_6 处置惩罚器利用 Kafka 2.6 Producer API 将 FlowFile 的内容作为单独的记录发送到 Apache Kafka。主要配置为 Kafka Brokers、Topic Name、Record Reader、Record Writer,其他配置根据业务需要进行配置。
Record Reader 利用的是 JsonTreeReader由于上个流程的数据就是要写入的数据这里没有进行其他配置:
Record Writer 利用的是 JsonRecordSetWriter利用的也是默认配置:
执行成功后,利用消耗者看到如下消息:
- [root@tcloud bin]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic Nifi-Kafka
- {"time.0":"2025-01-15 15:09:18","filename":"TS_666_20250115150921.txt","id.0":"123459084476912","number.0":"00000000000000"}
复制代码 3.总结
弄完第二个实例照旧感觉 Kettle 是比 NIFI 要容易明白,组件更加直观,NIFI 的一些配置着实让人摸不着头脑。
网盘分享:
通过网盘分享的文件:CSDN_NIFI_02
链接: https://pan.baidu.com/s/19VlC3uNgHQ4VvLuNAX7mxw?pwd=j9za 提取码: j9za
文件列表:
- TS_666_20250115150921.txt
- txt-json-kafka.xml(模板)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |