一直以来习惯使用 kettle 工具实现 ETL 数据处理由于升级安装了 Ubuntu24.4 桌面在处理 SQLite 数据库时出现错误。于是尝试使用 Apache NiFi 处理数据一边做一边学习总结了两个小例子。一、准备工作一是在官网上下载了 zip 文件之后自行解压至自己的目录然后使用下面命令启动服务./nifi.sh start: 在后台启动NiFi./nifi.sh stop:停止在后台运行的NiFii./nifi.sh status:提供NiFi的当前状态./nifi.sh run:在前台运行NiFi并等待 CtrlC 命令来关闭NiFi个人使用的话运行 ./nifi.sh run 命令随时使用 CtrlC 方便退出。值得注意的是在浏览器中输入 https://localhost:8443/不是普通的 http:// 方式。二是当服务启动之后会出现登录窗口要求您输入帐号密码。这有点象安装 mysql 8.0 时系统自动帮您生成一个帐号密码而是又不知道基本是什么内容。请执行 grep Generated logs/nifi-app*.log 命令从日志文件中找到它们的内容格式大致如下Generated Username [xxxxxx]Generated Password [yyyyyy]三是请使用 “Process Group” 组件来区分不同的工作任务如图双击对应的 “Process Group” 面板就能自动进入它的设计窗口。在整个页面的右下角最后一行也显示对应的路径标签随时可以返回主界面。二、例子将 CSV 文件转存为 JSON 文件源文件/home/infonous/Ourcause/data/assistant/input/incidents.csv目标文件/home/infonous/Ourcause/data/assistant/output/incidents.json第一步放置 GetFile 组件从主页面的第一个图标 “Processor” 拖放到主界面马上会弹出选择组件的新窗口在筛选中输入“GetFile”点击 Add 按钮GetFile 组件主要是设置三个属性Input Directory/home/infonous/Ourcause/data/assistant/input/File Filterincidents.csvKeep Source Filetrue 表读取之后删除文件 false 表读取之后保留不删除文件第二步放置 ConvertRecord 组件ConvertRecord 组件的两个属性Record Reader加入 CSVReaderRecord Writer加入 JsonRecordSetWriter实现一读一写的格式转换配合在 Value 空格的右边有上下三个点 “...” 图标点击就出现图片中的菜单选择“Create new servce” 选项然后自行配置属性。值得注意的是我们在桌面的任意空白处按鼠标右键在弹出菜单中选择 “Controller Services”就会进入到上面 CSVReader、JsonRecordSetWriter 这两个服务的列表如图这两个服务组件的 “state” 状态必须为 Enabled既出现蓝色闪电图标。如果是在 “disnabled” 状态的话点击行后面的连续三个上下点“...”图标在下拉菜单中启用。第三步放置 UpdateAttribute 组件在 Verification 前面有一个“”号点击新增一个属性filename${filename:replace(.csv,.json)}作用就是把 ConvertRecord 组件转换后生成的文件由 incidents.csv 更改为 incidents.json第四步放置 PutFile 组件Directory /home/infonous/Ourcause/data/assistant/output/顾名思义就是设置保存路径PutFile 是流程的最后一个节点当不想检查 log 日志的话所以无论结果是 failure 或 success 都勾选 terminate 。第五步 放置 LogAttribute 组件在整个流程设计中一共使用了两个 LogAttribute 组件便于检查 /log/nifi-app.log 日志文件。当您把鼠标放于组件之上便出现圆底白箭的小按钮拖动它至下一步的组件便出现 failure 或 success 等选项。三、使用后记可能是自己还不熟识这个工具所以当下的个人感觉并不好用。附友熊地理安全小程序二维码感兴趣的朋友帮忙扫扫增点流量。谢谢