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)]

可选匿名登陆:
在这里插入图片描述

可选单独账户登陆(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)]

7、从前至后依次启动调试

启动GetFile后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-25sSbEba-1646737453681)(Nifi入门实战.assets/image-20220308183520992.png)]

查看数据读取内容
在这里插入图片描述

看到数据内容:
在这里插入图片描述
新增属性后
在这里插入图片描述

查看CSV转JSON情况
在这里插入图片描述

查看SQL语句生成情况
在这里插入图片描述
8、查询结果

select * from "class";

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jDmmaFrt-1646737453687)(Nifi入门实战.assets/image-20220308185642414.png)]

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐