1. 概述
1.1 版本
FineDataLink 版本 | 功能变动 |
---|---|
4.0.29 | 「数据转换」节点中新增「Python 算子」 |
4.1.6.2 | 加载文件的默认路径从%fdl_home%\webapps\webroot\WEB-INF\assist\python迁移到%fdl_home%\webapps\webroot\WEB-INF\plugin\fdl_python |
4.1.13.1 | FINE_CONF_ENTITY 中新增参数 PythonConfig.metaFromMock,可控制 Python 算子的运行逻辑 |
1.2 应用场景
在数据开发过程中,对于一些复杂的数据处理(比如使用可视化算子或者 SparkSQL 较难实现的),需要在「数据转换」节点中使用 Python 脚本处理数据。
在数据开发过程中,用户希望通过 FineDataLink 读取文件数据,但 文件输入算子 不支持读取该文件,该场景下可通过 Python 脚本加载文件数据。
1.3 功能简介
「数据转换」节点中新增「Python 算子」,可调用 Python 脚本进行复杂数据处理。如下图所示:
注:「Python 算子」与「Python脚本」的区别请参见:Python 脚本与 Python 算子区别
demo任务详情参见:https://demo.finedatalink.com/ 「数据转换-Python 算子」
2. 使用须知
1)「Python 算子」前面只能接入一个输入算子。
2)「Python 算子」不能放在两个过程性算子中间。
3)Python 编辑器只能联想 Python 基础语法,不能联想 import 中的方法;Python 编辑器没有语法高亮;Python编辑器没有语法检测。
4)使用「Python 算子」加载文件时,支持绝对路径/相对路径加载文件。
需注意,4.1.6.2 之前版本默认运行的路径为%fdl_honme%\webapps\webroot\WEB-INF\assist\python;4.1.6.2 及之后版本,默认运行的路径为%fdl_honme%\webapps\webroot\WEB-INF\plugin\fdl_python
(该路径用户可自定义,请参见本文 3.3 节内容),根据这个路径去算相对路径。
5)可以使用「Python 算子」导入自定义函数:
支持导入 python 运行环境下安装的第三方模块。
支持导入webroot/WEB-INF/assist/python/resources/下自定义的模块。
6)「Python 算子」的输入源,在 Python 代码中是以 Python 的 pandas 库中的 dataframe 数据结构存在。用户若想对数据源做处理,可参考 dataframe 的用法。
7)numpy 2.0 版本(2024年6月16号发布)不再支持 np.float ,无法调整类型。
8)4.1.13.1 及之后版本,FINE_CONF_ENTITY 中新增参数 PythonConfig.metaFromMock,可控制 Python 算子的运行逻辑:
注:一般情况下无需修改该值,用户根据实际情况使用该参数。
值默认为 false:使用上游算子预览的数据,执行一次 Python 算子的代码得到 Python 算子输出的元数据,再实际执行一次 Python 代码进行数据转换。
将值修改为 true(需重启 FDL 工程):使用上游算子的元数据 mock 空数据,执行一次 Python 算子的代码得到 Python 算子输出的元数据,再实际执行一次 Python 代码进行数据转换。
3. 前提条件
使用「Python 算子」,需要准备 Python 环境。
3.1 确定 Python 版本
使用 Python 3.X版本。
3.2 安装必备包(必做)
注:用户需根据实际环境修改下方语句。
Linux & Windows 环境中:
1)安装 pandas
pip3 install pandas
2)安装 datetime
pip3 install datetime
注意点:
pip 默认的资源站为国外站,在国内,使用上述语句可能会下载较慢或报错,可在安装时指定 pip 源:
示例语句:
pip3 install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
国内常用的镜像源:
阿里云:https://mirrors.aliyun.com/pypi/simple
中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/simple/
豆瓣:https://pypi.douban.com/simple
清华:https://pypi.tuna.tsinghua.edu.cn/simple/
3.3 添加 python.properties 文件(选做)
python.properties 文件中可自定义内容:
设置项 | 说明 |
---|---|
python.workdir | 工作目录
|
python.cmd | 执行脚本,默认环境变量windows为python、linux为python3 默认情况下: 会使用环境变量中的 Python,不需要用户额外配置 Python 路径:
自定义说明: 1)Linux 示例 python.cmd=/home/python/bin/python3 2)Windows 示例 python.cmd=E:\\Python3x\\python.exe 注:Windows 中路径为双反斜杠 \\ 。 |
python.concurrency | python 线程并发数,默认 5 |
python.timeout | python 程序超时时间,单位为s,默认1800s |
若用户希望自定义表格中的设置项,在tomcat\webapps\webroot\WEB-INF\assist下新建 python\config 文件夹,放入 python.properties 文件(修改 python.properties 文件后,需要重启工程,可做完本文 3.4 节操作后,再重启工程)。
python.properties 文件(需根据实际情况修改):文件示例.zip
3.4 修改 finedb 配置项(必做)
找到 FineDB 数据库中的 fine_conf_entity 表,新增配置项 PythonConfig.enable ,值为 true 。修改方法请参见:手动修改fine_conf_entity;新增配置项后,需重启工程。
4. 示例
本章示例:取出 book 表中数据,使用 Python 脚本为每一本书生成编码。
4.1 取出 book 表数据
1)新建定时任务,拖入「数据转换」节点,进入「数据转换」节点。
2)拖入「DB表输入」算子,取出 book 表数据。如下图所示:
4.2 设置 Python 算子
1)拖入 Python 算子,编写脚本,为每一本书生成编码。
注1:「DB表输入」需点击生成。
注2:Windows 中部署的 FDL 版本为 4.0.30 之前时,代码中不能出现双引号;Windows 中部署的 FDL 版本为 4.0.30 及之后时 ,代码中支持出现双引号。
注3:若引用参数,参数引用格式为:${参数名}
import pandas as pd
# 必须使用 pandas 库
input = DB表输入
output = input.assign(书本编码=range(1, len(DB表输入.title) + 1))
# 添加新列并赋值给默认输出变量
# 使用output变量指定当前算子的输出
2)点击「数据预览」,可看到生成的「书本编码」列。如下图所示:
4.3 输出数据
1)拖入「DB表输出」算子,将数据输出。如下图所示:
2)点击右上角「保存」按钮。
4.4 效果查看
任务执行成功后,生成的表数据如下图所示:
4.5 知识扩展:日志说明
用户可在「任务控制>任务属性>日志等级设置」中,为定时任务单独设置日志输出级别,满足用户按需查看日志、调试和排错的需求。
若需要详细的日志展示,在「日志等级设置」中,选择 INFO 即可。详情请参见:日志等级设置
任务运行后,「日志」Tab 下展示具体日志: