如何在Apache NiFi中借助Python pandas实现CSV转Excel并调用虚拟环境?
NiFi CSV转Excel及Python虚拟环境使用解决方案
1. CSV原始数据转Excel实现方法
1.1 使用ExecuteStreamCommand处理器实现
- 提前准备转换脚本,需在运行环境安装
pandas、openpyxl依赖,脚本示例如下:
import sys import pandas as pd if __name__ == "__main__": # 读取NiFi传入的CSV流数据 csv_df = pd.read_csv(sys.stdin) # 将Excel二进制流输出供NiFi接收 csv_df.to_excel(sys.stdout.buffer, index=False, engine="openpyxl")
- 处理器配置参数:
- Command Path:填写Python解释器的绝对路径
- Command Arguments:填写上述转换脚本的绝对路径,例如
/data/nifi/scripts/csv2excel.py - 开启
Capture Standard Out、Capture Standard Err配置项
- 处理完成后,可通过UpdateAttribute处理器将流文件后缀修改为
.xlsx即可得到可用的Excel文件
1.2 使用ExecuteScript处理器实现
- 选择Script Engine为
python - 在Script Body中直接编写转换逻辑,需引入NiFi流操作API读取、写入流文件内容
- 注意:该方案需要NiFi调用的Python环境中已提前安装好转换所需的所有依赖
2. Python虚拟环境依赖调用方法
- 无需提前激活虚拟环境,直接调用虚拟环境内的Python解释器绝对路径即可自动加载对应依赖:
- Linux/Mac环境路径示例:
/你的项目根目录/env/bin/python - Windows环境路径示例:
C:\你的项目根目录\env\Scripts\python.exe
- Linux/Mac环境路径示例:
- 测试方法:直接在终端执行
虚拟环境Python绝对路径 脚本绝对路径即可验证依赖加载是否正常,例如/data/project/env/bin/python /data/project/test.py - 对应到NiFi场景,直接将ExecuteStreamCommand的Command Path配置为上述虚拟环境的Python绝对路径即可,所有在该虚拟环境中通过
pip install安装的依赖都可正常被调用
内容的提问来源于stack exchange,提问作者Sairungrawee Navamachiti
相关产品推荐
相关产品推荐

