Apache nifi demo 实验

Apache nifi 是个数据流系统,可以通过配置 自定义的流程来实现数据的转换。

比如可以配置一个流程,读取数据库里的数据,再转换,最后保存到本地文件。

这样可以来实现一些数据转换的操作,而不用特地编写程序来导入导出。

  • 相关资料

国内下载镜像: https://mirrors.aliyun.com/apache/nifi/2.2.0/, 里面有不同的版本,这里下载标准版的nifi-2.2.0-bin.zip

官方文档: https://nifi.apache.org/

processor类型的文档:https://nifi.apache.org/components

本文包含以下内容:

  • 启动运行

  • 一些概念

  • 一个读取csv格式数据,转换为json格式数据,写入到本地磁盘的demo

启动运行:

只需要解压zip,进入bin目录,打开命令行,执行执行nifi start即可启动,启动后密码会生成到logs目录的nifi-app.log文件里,搜索password可以看到生成的账号密码

D:\nifi-2.2.0-bin\nifi-2.2.0\bin>nifi start

JAVA_HOME=C:\Program Files\Java\jdk1.8.0_161

NIFI_HOME=D:\ljhlab\nifi-2.2.0-bin\nifi-2.2.0

日志文件里搜索,可以看到:

2025-03-02 22:17:53,849 INFO [main] o.a.n.a.s.u.SingleUserLoginIdentityProvider

Generated Username [8b418056-cf0a-46a3-b08f-a8ba25563eca]

Generated Password [9Va1ZkYgiXtqnOUytqj63ympwhZOjqZi]

这个就是生成的账号密码

异常处理,可能会遇到jdk版本问题,请下载对于版本的jdk

Error: A JNI error has occurred, please check your installation and try again

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/nifi/bootstrap/BootstrapProcess has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 52.0

启动失败,可以看到是jdk版本要 65 ,需要jdk21的意思。

修改nifi-env.cmd,添加,或者直接在环境变量里设置JAVA_HOME的值

set JAVA_HOME="D:\env\openjdk-22.0.1_windows-x64_bin\jdk-22.0.1"

  • 进入网页·

访问https://localhost:8443 进入网页ui界面

实验demo:

下面进行一个读取本地csv文件,然后导入到另外目录成json格式的实验,这里为了演示方便,csv数据写死在一个输入组件里。

数据准备:

bash 复制代码
title,author,score
你杀了谁,东野圭吾,7.1
黄仁勋:英伟达之芯,斯蒂芬·威特,7.3 

流程简介: 就是不断添加不同类型的processor,比如获取文件的,转换数据格式的,然后用线将不同组件链接起来,比如读取文件,链接到解析csv,链接的时候选择relationship,每个组件都会有relationship

实验流程:

  • 添加一个组件作为输出数据源

  • 添加一个转换数据格式的组件,ConvertRecord,转换csv成json格式

  • 添加一个组件,将ConvertRecord都内容输出到本地文件

添加一个GenerateFLowFile的组件,用来生成一个FlowFile,FlowFile可以理解为一行数据,即这个组件会输出一行数据,这里生成一个csv数据

刚添加时有问题就会有黄色标,可以点击查看错误,来修正

每个组件都有properties来设置属性,这里点开来设置,这个组件输出的内容

  • 再添加一个处理器,ConvertRecord,这个processor可以配置一个reader和writer,这里的话配置一个csv reader,用来解析第一个处理器传进来的数据。

点开properties,看到设置值里是空的,点击create new service创建一个配置。

然后将两个组件链接起来

可以看到还是有警告,是因为还有relationship没有设置,每个都要设置,

像failure就是失败时的,如果不需要进一步处理可以勾选terminate。success的等会会和链接到一个写入文件的组件里,这里测试也可以暂时设置为terminate先。

如果看到这种警告,就是刚刚添加的service还有有启动,打开properties,点击三个点,点go to service,把服务启动就行,在这里也可以进一步配置这些服务的属性

然后没有警告了,运行测试下,先启动第一个GenerateFlowFile,右键start

可以看到queued里有一个等待了,因为下一个组件还没启动,就在队列里了,再启动CovertRecord来消费。

启动后可以看到in了三个,由于没有输出,可以点击VIew Data Provenance来检查,输入的数据情况。

点击view detail,可以看到输入输出情况,

输出的已经是json格式了,然后可以,添加一个写出的processor,来输出到某个目录。

继续添加processor,

继续链接到一起

然后配置下putFIle的properties,设置写出的目录,

右键start,后可以看到目录以及有写出的文件了。

经验:

  • 下拉框为空时,点击三点可以打开创建新service的菜单

  • properties tab里配置完后可以点击verfication验证

相关推荐
SelectDB技术团队17 小时前
慢 SQL 诊断准确率 99.99%,天翼云基于 Apache Doris MCP 的 AI 智能运维实践
大数据·数据库·人工智能·sql·apache
晚风吹人醒.18 小时前
LAMP(Linux+Apache+MySQL+PHP)完整搭建过程
linux·服务器·mysql·centos·php·apache·lamp
东风微鸣2 天前
Apache Parquet 优势与日志应用场景解析
运维·apache
武子康2 天前
大数据-193 Apache Tez 实战:Hive on Tez 安装配置、DAG原理与常见坑
大数据·后端·apache
SelectDB2 天前
慢 SQL 诊断准确率 99.99%,天翼云基于 Apache Doris MCP 的 AI 智能运维实践
数据库·人工智能·apache
Asurplus3 天前
Centos7安装Maven环境
java·centos·maven·apache·yum
晚风吹人醒.3 天前
Apache Web网站服务:安装、编译、配置,全流程讲解
服务器·apache·软连接·网页·硬链接
一个天蝎座 白勺 程序猿3 天前
Apache IoTDB(12):深度解析时序数据聚合的GROUP BY与HAVING子句
数据库·sql·apache·iotdb
世界尽头与你3 天前
CVE-2021-40438_ Apache HTTP Server mod_proxy 模块 SSRF漏洞
安全·网络安全·渗透测试·apache
浔川python社4 天前
《C++ 小程序编写系列》(第四部):实战:简易图书管理系统(类与对象篇)
java·开发语言·apache