不得不说,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.解压安装包
- unzip nifi-1.28.1-bin.zip
- # 2.配置环境变量【NIFI_HOME根据实际情况进行修改】
- cat <<'EOF' > /etc/profile.d/nifi.sh
- export NIFI_HOME=/home/nifitest/nifi-1.28.1
- export PATH=$PATH:${NIFI_HOME}/bin
- EOF
- sleep 1
- source /etc/profile.d/nifi.sh
- # 3.修改配置文件 /conf/nifi.properties
- nifi.web.https.host=hostname
- nifi.web.https.port=58080
- # 4.启动
- nifi.sh start
- # 5.查看日志获取用户名及密码
- cat ${NIFI_HOME}/logs/nifi-app.log | grep Generated
- Generated Username [7c3d605e-d28b-4a84-b30d-7f11a0f8e18b]
- Generated Password [rVR9XZSfabe7H9rsmZVF6MLicgIxAbGd]
复制代码 3.登录
利用日志里生成的用户名和暗码进行登录,地点为 https://host:port/nifi/
4.实例
虽然 NIFI 是图形化可拖拽的,但是利用还是有点儿门槛,我是 NIFI 新手,本实例参考 CSDN 作者 邢为栋同砚的《NiFi数据流实例二》,在原作基础上进行了一些调解和增补。由于每个处置惩罚器都是初次利用,一些配置或者处置惩罚器本身的利用大概存在一些标题,发现的小同伴儿请不吝见教,整体流程图如下:
4.1 获取和风天气接口数据
4.1.1 InvokeHTTP
InvokeHTTP 处置惩罚器的中文《阐明文档》,主要配置为 HTTP URL。我们可以在和风天气《官网》进行注册,获取接口认证 KEY。
本次利用的 URL 为:
- https://devapi.qweather.com/v7/weather/now?location=101180101&key=认证你申请的KEY
复制代码 location101180101是河南郑州的都会编号。接口相应效果为:
- {
- "code": "200",
- "fxLink": "https://www.qweather.com/en/weather/zhengzhou-101180101.html",
- "now": {
- "cloud": "10",
- "dew": "-13",
- "feelsLike": "2",
- "humidity": "27",
- "icon": "100",
- "obsTime": "2025-01-08T14:09+08:00",
- "precip": "0.0",
- "pressure": "1015",
- "temp": "5",
- "text": "晴",
- "vis": "30",
- "wind360": "45",
- "windDir": "东北风",
- "windScale": "2",
- "windSpeed": "7"
- },
- "refer": {
- "license": [
- "CC BY-SA 4.0"
- ],
- "sources": [
- "QWeather"
- ]
- },
- "updateTime": "2025-01-08T14:17+08:00"
- }
复制代码 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可以将上一步获取的数据重新组装。
重新组装后的数据格式为:
- {
- "updateTime" : "2025-01-08T14:36+08:00",
- "text" : "晴",
- "windDir" : "东风",
- "city" : "https://www.qweather.com/en/weather/zhengzhou-101180101.html"
- }
复制代码 4.3 数据保存到MySQL数据库
4.3.1 PutDatabaseRecord
PutDatabaseRecord 处置惩罚器利用指定的RecordReader从传入的流文件中读取(大概是多个,说数组也成)记载。这些记载将转换为SQL语句,并作为一个批次执行。详细配置可参考处置惩罚器的中文利用《阐明》。这个处置惩罚器的配置项虽然比较多,但是很容易看明白。
(仅作简朴测试,字段啥的就随便存几个)数据库表的初始化语句:
- CREATE TABLE `weather` (
- `city` varchar(255) DEFAULT NULL,
- `text` varchar(255) DEFAULT NULL,
- `windDir` varchar(255) DEFAULT NULL,
- `updateTime` varchar(255) DEFAULT NULL
- ) 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企服之家,中国第一个企服评测及商务社交产业平台。 |