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
可选匿名登陆:
可选单独账户登陆(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服务
7、从前至后依次启动调试
启动GetFile后
查看数据读取内容
看到数据内容:
新增属性后
查看CSV转JSON情况
查看SQL语句生成情况
8、查询结果
select * from "class";
更多推荐
已为社区贡献1条内容
所有评论(0)