NIFI【应用 01】1.28.1版本利用实例分享(InvokeHTTP、PutDatabaseRecord、 ...

打印 上一主题 下一主题

主题 994|帖子 994|积分 2982

不得不说,nifi 是真的非常活跃,最新版本已经是 2.0.0,本次利用上个版本1.28.1 进行内容分享。安装过程可参考《一篇学会部署NIFI》。
Apache NIFI 中文文档地点 https://nifichina.github.io/ 内容很是详细,各人可以参考。

  
1.下载

国内镜像源:


  • 清华源(NIFI 无法下载 大概是个例) https://tuna.tsinghua.edu.cn/
  • 阿里源(可下载)https://mirrors.aliyun.com/
  • 中科大源(未验证) https://mirrors.ustc.edu.cn/
  • 网易源(未验证) https://mirrors.163.com/
  • 腾讯源(未验证) https://mirrors.cloud.tencent.com/
2.安装

  1. # 1.解压安装包
  2. unzip nifi-1.28.1-bin.zip
  3. # 2.配置环境变量【NIFI_HOME根据实际情况进行修改】
  4. cat <<'EOF' > /etc/profile.d/nifi.sh
  5. export NIFI_HOME=/home/nifitest/nifi-1.28.1
  6. export PATH=$PATH:${NIFI_HOME}/bin
  7. EOF
  8. sleep 1
  9. source /etc/profile.d/nifi.sh
  10. # 3.修改配置文件 /conf/nifi.properties
  11. nifi.web.https.host=hostname
  12. nifi.web.https.port=58080
  13. # 4.启动
  14. nifi.sh start
  15. # 5.查看日志获取用户名及密码
  16. cat ${NIFI_HOME}/logs/nifi-app.log | grep Generated
  17. Generated Username [7c3d605e-d28b-4a84-b30d-7f11a0f8e18b]
  18. Generated Password [rVR9XZSfabe7H9rsmZVF6MLicgIxAbGd]
复制代码
3.登录

利用日志里生成的用户名和暗码进行登录,地点为 https://host:port/nifi/

4.实例

虽然 NIFI 是图形化可拖拽的,但是利用还是有点儿门槛,我是 NIFI 新手,本实例参考 CSDN 作者 邢为栋同砚的《NiFi数据流实例二》,在原作基础上进行了一些调解和增补。由于每个处置惩罚器都是初次利用,一些配置或者处置惩罚器本身的利用大概存在一些标题,发现的小同伴儿请不吝见教,整体流程图如下:

4.1 获取和风天气接口数据

4.1.1 InvokeHTTP

InvokeHTTP 处置惩罚器的中文《阐明文档》,主要配置为 HTTP URL。我们可以在和风天气《官网》进行注册,获取接口认证 KEY。

本次利用的 URL 为:
  1. https://devapi.qweather.com/v7/weather/now?location=101180101&key=认证你申请的KEY
复制代码
location101180101是河南郑州的都会编号。接口相应效果为:
  1. {
  2.     "code": "200",
  3.     "fxLink": "https://www.qweather.com/en/weather/zhengzhou-101180101.html",
  4.     "now": {
  5.         "cloud": "10",
  6.         "dew": "-13",
  7.         "feelsLike": "2",
  8.         "humidity": "27",
  9.         "icon": "100",
  10.         "obsTime": "2025-01-08T14:09+08:00",
  11.         "precip": "0.0",
  12.         "pressure": "1015",
  13.         "temp": "5",
  14.         "text": "晴",
  15.         "vis": "30",
  16.         "wind360": "45",
  17.         "windDir": "东北风",
  18.         "windScale": "2",
  19.         "windSpeed": "7"
  20.     },
  21.     "refer": {
  22.         "license": [
  23.             "CC BY-SA 4.0"
  24.         ],
  25.         "sources": [
  26.             "QWeather"
  27.         ]
  28.     },
  29.     "updateTime": "2025-01-08T14:17+08:00"
  30. }
复制代码
4.2 将相应效果转换为数据库行数据

进行转换的原因是 PutDatabaseRecord 需要一个 Record Reader 配置,所以这里对 JSON 数据进行了剖析和重组(由于是新手,大概不需要这一步)。
4.2.1 EvaluateJsonPath

EvaluateJsonPath 处置惩罚器根据流文件的内容盘算一个或多个JsonPath表达式。详细配置可参考处置惩罚器的中文利用《阐明》,主要配置为 Destination和用于组装新 JSON 的参数。

4.2.2 AttributesToJSON

AttributesToJSON 处置惩罚器将输入流文件属性转成JSON表示情势。详细配置可参考处置惩罚器的中文利用《阐明》。主要配置为 Attributes List 和 Attributes Regular Expression可以将上一步获取的数据重新组装。

重新组装后的数据格式为:
  1. {
  2.   "updateTime" : "2025-01-08T14:36+08:00",
  3.   "text" : "晴",
  4.   "windDir" : "东风",
  5.   "city" : "https://www.qweather.com/en/weather/zhengzhou-101180101.html"
  6. }
复制代码
4.3 数据保存到MySQL数据库

4.3.1 PutDatabaseRecord

PutDatabaseRecord 处置惩罚器利用指定的RecordReader从传入的流文件中读取(大概是多个,说数组也成)记载。这些记载将转换为SQL语句,并作为一个批次执行。详细配置可参考处置惩罚器的中文利用《阐明》。这个处置惩罚器的配置项虽然比较多,但是很容易看明白。

(仅作简朴测试,字段啥的就随便存几个)数据库表的初始化语句:
  1. CREATE TABLE `weather` (
  2.   `city` varchar(255) DEFAULT NULL,
  3.   `text` varchar(255) DEFAULT NULL,
  4.   `windDir` varchar(255) DEFAULT NULL,
  5.   `updateTime` varchar(255) DEFAULT NULL
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
复制代码
4.3.2 JsonTreeReader


JsonTreeReader 没有中文文档,是将 JSON 转换成记载对象。

4.3.3 DBCPConnectionPool

DBCPConnectionPool 的《中文文档》,主要是配置数据库连接池的,这个地方要详细阐明一下。


  • Database Connection URL 这里各人应该不陌生
  • Database Driver Class Name 数据库驱动类的名称
  • Database Driver Location(s) 这个地方要自己上传驱动 jar 包(我是用的是 mysql-connector-java-8.0.21.jar)
  • Database User 用户名
  • Database Password 暗码

4.4 运行效果

点击 Start启动流程:

MySQL 数据库数据:

5.总结

之前我也利用过 Kettle,仅入门而已,Kettle 是比 NIFI 要容易的,组件更加直观,NIFI 的一些配置让人摸不着头脑。网盘分享:
   链接:https://pan.baidu.com/s/1g5d_UIMsBoXTDRj-DNlvzA?pwd=ohuk
提取码:ohuk
  文件列表:


  • mysql-connector-java-8.0.21.jar
  • 获取和风天气数据并入库.xml(模板)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表