Apache nifi 2.11.0 使用例子

一直以来习惯使用 kettle 工具实现 ETL 数据处理,由于升级安装了 Ubuntu24.4 桌面,在处理 SQLite 数据库时出现错误。于是尝试使用 Apache NiFi 处理数据,一边做一边学习,总结了两个小例子。

一、准备工作

一是在官网上下载了 zip 文件之后,自行解压至自己的目录,然后使用下面命令启动服务:


./nifi.sh start: 在后台启动NiFi
./nifi.sh stop:停止在后台运行的NiFii
./nifi.sh status:提供NiFi的当前状态
./nifi.sh run:在前台运行NiFi并等待 Ctrl+C 命令来关闭NiFi

个人使用的话,运行 ./nifi.sh run 命令,随时使用  Ctrl+C 方便退出。值得注意的是,在浏览器中输入 https://localhost:8443/,不是普通的 http:// 方式。

二是当服务启动之后,会出现登录窗口,要求您输入帐号密码。这有点象安装 mysql 8.0 时,系统自动帮您生成一个帐号密码,而是又不知道基本是什么内容。请执行 grep Generated logs/nifi-app*.log 命令,从日志文件中找到它们的内容,格式大致如下:

Generated Username [xxxxxx]
Generated Password [yyyyyy]

三是请使用 “Process Group” 组件来区分不同的工作任务,如图:


1


双击对应的 “Process Group” 面板,就能自动进入它的设计窗口。在整个页面的右下角最后一行,也显示对应的路径标签,随时可以返回主界面。

二、例子:将 CSV 文件转存为 JSON 文件

源文件:/home/infonous/Ourcause/data/assistant/input/incident‌s.csv

目标文件:/home/infonous/Ourcause/data/assistant/output/incident‌s.json

2

 

第一步:放置 GetFile 组件

从主页面的第一个图标 “Processor” 拖放到主界面,马上会弹出选择组件的新窗口,在筛选中输入“GetFile”,点击 Add 按钮:

3

 

4

 

GetFile 组件主要是设置三个属性:

Input Directory:/home/infonous/Ourcause/data/assistant/input/
File Filter:incident‌s.csv
Keep Source File:true 表读取之后删除文件 / false 表读取之后保留不删除文件

第二步:放置 ConvertRecord 组件

5


ConvertRecord 组件的两个属性:

Record Reader:加入 CSVReader
Record Writer:加入 JsonRecordSetWriter

实现一读一写的格式转换配合,在 Value 空格的右边有上下三个点 “...” 图标,点击就出现图片中的菜单,选择“Create new servce” 选项,然后自行配置属性。

值得注意的是,我们在桌面的任意空白处按鼠标右键,在弹出菜单中选择 “Controller Services”,就会进入到上面 CSVReader、JsonRecordSetWriter 这两个服务的列表,如图:

6


这两个服务组件的 “state” 状态必须为 "Enabled",既出现蓝色闪电图标。如果是在 “disnabled” 状态的话,点击行后面的连续三个上下点“...”图标,在下拉菜单中启用。

第三步:放置 UpdateAttribute 组件

7


在 Verification 前面有一个“”号,点击新增一个属性:

filename:${filename:replace('.csv','.json')}

作用就是把 ConvertRecord 组件转换后生成的文件,由 incident‌s.csv 更改为 incident‌s.json

第四步,放置 PutFile 组件

8


Directory: /home/infonous/Ourcause/data/assistant/output/

顾名思义就是设置保存路径

9


PutFile 是流程的最后一个节点,当不想检查 log 日志的话,所以无论结果是 failure 或 success 都勾选 terminate 。

第五步 放置 LogAttribute 组件

在整个流程设计中,一共使用了两个 LogAttribute 组件(见图片一),便于检查 /log/nifi-app.log 日志文件。

10


当您把鼠标放于组件之上,便出现圆底白箭的小按钮,拖动它至下一步的组件,便出现 failure 或 success 等选项。

三、使用后记

可能是自己还不熟识这个工具,所以当下的个人感觉:并不好用。

 

附:友熊地理安全小程序二维码,感兴趣的朋友帮忙给点流量。谢谢

gh_a6f8d94a09bf_258

 

posted @ 2026-08-21 08:28  街道小厂奔前方  阅读(6)  评论(0)    收藏  举报