Nifi入门实战:CSV写入Postgres
Nifi入门实战一、docker 安装方式docker pull apache/nifi:1.14.0# 注意: 日志文件的数据卷可以创建但是nifi在docker运行时候使用的是nifi:nifi账户,其数据卷创建后默认的Owner是root账户,会造成nifi没有写日志文件的问题。#数据卷本机路径:容器路径#-v $PWD/logs:/opt/nifi/nifi-current/logs \#
·
Nifi入门实战
一、docker 安装方式
docker pull apache/nifi:1.14.0
# 注意: 日志文件的数据卷可以创建但是nifi在docker运行时候使用的是nifi:nifi账户,其数据卷创建后默认的Owner是root账户,会造成nifi没有写日志文件的问题。
# 数据卷 本机路径:容器路径
# -v $PWD/logs:/opt/nifi/nifi-current/logs \
# 可以使用手动到容器内部 `docker exec -it nifi /bin/bash` 再执行`chown nifi nifi-current/logs` 强制将容器的logs文件夹改为nifi用户的。
# 注意: -e NIFI_WEB_HTTP_PORT='8443' \ 是必须加的,否则非本机访问页面会报错。
docker run \
--name nifi \
--privileged=true \
-p 8443:8443 \
-d \
-v $PWD/data:/data \
-v $PWD/logs:/opt/nifi/nifi-current/logs \
-e NIFI_WEB_HTTP_PORT='8443' \
-e SINGLE_USER_CREDENTIALS_USERNAME=root \
-e SINGLE_USER_CREDENTIALS_PASSWORD=123456789012 \
apache/nifi:1.14.0
二、普通安装方式
1、资源下载:
https://nifi.apache.org/
#将压缩包解压至/opt文件夹
tar -xvf nifi-1.14.0-bin.tar.gz -C /opt
2、修改配置文件
均在conf目录下
nifi.properties
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6y8JlctY-1646737453673)(C:\Users\lisai\AppData\Roaming\Typora\typora-user-images\image-20220308173945119.png)]](https://i-blog.csdnimg.cn/blog_migrate/9bf79540de53271918cca8c5e055c26e.png)
可选匿名登陆:
可选单独账户登陆(single-user-authorizer)
# 配置文件中出现如下`nifi.properties`,默认就有此配置: nifi.security.user.authorizer=single-user-authorizer
# 使用如下命令设置单用户登陆的密钥信息,注意密码长度需要大于等于12位
./bin/nifi.sh set-single-user-credentials <username> <password>
# 例如执行如下,页面登陆是需要使用
./bin/nifi.sh set-single-user-credentials root 123456789012
配置后login-identity-providers.xml,其中密钥是经过hash的
<--!The 'Username' will be a random UUID and the 'Password' will be stored using bcrypt hashing </--!The>
<provider>
<identifier>single-user-provider</identifier>
<class>org.apache.nifi.authentication.single.user.SingleUserLoginIdentityProvider</class>
<property name="Username">root</property>
<property name="Password">$2b$12$eOGFUrv94WPD9W8oGDTAhORHnE3og7Ry/r6oZdZPYQOH9IPoauQPC</property>
</provider>
3、启动程序
# 启动
bin/nifi.sh start
# 查看状态
bin/nifi.sh status
# 停止
bin/nifi.sh stop
4、查看日志
# app日志
tail -100f nifi-app.log
# 用户登陆和操作日志
tail -100f nifi-user.log
5、登陆页面
# 注意:http和https不同,这里选择的是http方式登陆
http://ip:8443/nifi
三、CSV文件到Postgres数据库实战
总体步骤
1、文件准备
# 创建存放CSV源文件的文件夹
mkdir -p /opt/nifi-1.14.0/file_source
vim test.csv
# 如下内容
id,name
1,li
2,wang
3,jia
4,sun
2、读取CSV文件


3、更新表结构值flowfile的属性中


4、将CSV转化为JSON串

进入配置Flow界面

4.1 配置CSVReader

4.2 配置Avro注册器

并增加class属性的JSON字符串,作为转换时候的Schema信息,其应与数据库表结构信息一致。
{
"type":"record",
"name":"ClassRecord",
"fields":[
{"name":"id","type":["null","string"]},
{"name":"name","type":["null","string"]}
]
}
数据库表
create table "class" (id text,name text);
4.2 配置JsonRecordSetWriter

5、JSON转为SQL语句

5.1 连接池配置
需要配置postgresql的jdbc驱动地址
jdbc:postgresql://IP地址:5432/库名
org.postgresql.Driver
5.2 执行SQL
最后一个任务

6、启用所有controller服务
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jNFeHOg2-1646737453681)(Nifi入门实战.assets/image-20220308183218971.png)]](https://i-blog.csdnimg.cn/blog_migrate/09a7b90a584d77eca57018e663ac15e6.png)
7、从前至后依次启动调试
启动GetFile后
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-25sSbEba-1646737453681)(Nifi入门实战.assets/image-20220308183520992.png)]](https://i-blog.csdnimg.cn/blog_migrate/bad5ec4d7b7a36cd3b0d7538e90f5d6a.png)
查看数据读取内容
看到数据内容:
新增属性后
查看CSV转JSON情况
查看SQL语句生成情况
8、查询结果
select * from "class";
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jDmmaFrt-1646737453687)(Nifi入门实战.assets/image-20220308185642414.png)]](https://i-blog.csdnimg.cn/blog_migrate/3024ec643e251bb3efb98a1589896a23.png)
更多推荐



所有评论(0)