反馈已提交

网络繁忙

Python 算子

  • 文档创建者:Wendy123456
  • 历史版本:57
  • 最近更新:Wendy123456 于 2025-09-22
  • 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\plugins\fdl_python
    4.1.13.1FINE_CONF_ENTITY 中新增参数 PythonConfig.metaFromMock,可控制 Python 算子的运行逻辑
    4.2.5.3
    • 支持数据开发时调试 Python,可查看返回结果,详情参见本文 4.2 节

    • 支持 Python 算子接入多个输入类算子、一个过程类型算子

    • ops 首次部署 FDL 时原本镜像包中的 python 模块会因为挂载宿主机目录导致被覆盖,此版本已经解决

    • Python 算子内存占用限制优化调整,详情参见本文 5.2 节

    1.2 应用场景

    • 在数据开发过程中,对于一些复杂的数据处理(比如使用可视化算子或者 SparkSQL 较难实现的),需要在「数据转换」节点中使用 Python 脚本处理数据。

    • 在数据开发过程中,用户希望通过 FineDataLink 读取文件数据,但 文件输入算子 不支持读取该文件,该场景下可通过 Python 脚本加载文件数据。

    1.3 功能简介

    数据转换节点中新增「Python 算子」,可调用 Python 脚本进行复杂数据处理。如下图所示:

    21.png

    注:「Python 算子」与「Python脚本」的区别请参见:Python 脚本与 Python 算子区别

    demo任务详情参见:https://demo.finedatalink.com/  「数据转换-Python 算子」

    2. 使用须知

    1)4.2.5.3 之前的版本「Python 算子」前面只能接入一个输入算子。

    4.2.5.3 版本开始支持 Python 算子前接入多个输入类算子、一个过程类型算子。

    2)「Python 算子」不能放在两个过程性算子中间。如果「Python 算子」上游输入源全是输入类算子,则 Python 算子后面可以接过程型(除字段设置算子外的其他「连接」、「转换」、「实验室」算子)算子。如果 Python 算子上游输入源存在过程型算子,则 Python 算子后面只能接输出型算子。

    3)Python 编辑器只能联想 Python 基础语法,不能联想 import 中的方法;Python 编辑器没有语法高亮;Python编辑器没有语法检测。

    4)使用「Python 算子」加载文件时,支持绝对路径/相对路径加载文件。

    需注意,4.1.6.2 之前版本默认运行的路径为%fdl_home%\webapps\webroot\WEB-INF\assist\python;4.1.6.2 及之后版本,默认运行的路径为%fdl_home%\webapps\webroot\WEB-INF\plugins\fdl_python

    (该路径用户可自定义,请参见本文 3.3 节内容),根据这个路径去算相对路径。

    1694488810803658.png

    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 版本。

    如果 FDL 所部署系统(镜像)中没有 Python 环境则无法使用,需要手动安装 Python 环境或更换带有 Python 环境的镜像。可以进入系统输入通过如下命令查看:

    python --version

    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 环境,通常建议单独创建一个P ython 环境,并通过此处的设置让 FDL 使用这个单独的 Python 环境。

    设置项
    说明
    python.workdir

    工作目录

    • 4.1.6.2 之前版本,默认为:%fdl_home%\webapps\webroot\WEB-INF\assist\python

    • 4.1.6.2 及之后版本,默认为%fdl_home%\webapps\webroot\WEB-INF\plugins\fdl_python

    python.cmd

    指定使用的 python 环境的路径,默认环境变量 Windows 为 python、Linux 为 python3

    默认情况下:

    会使用环境变量中的 Python,不需要用户额外配置 Python 路径:

    • Linux 系统中若能识别python3命令行,FDL 也能识别

    • Windows 若能识别python命令行,FDL 也能识别

    自定义说明:

    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

    若用户希望自定义表格中的设置项:

    1)新建文件夹

    4.1.6.2 之前版本:

    tomcat\webapps\webroot\WEB-INF\assist下新建 python\config 文件夹。

    4.1.6.2 及之后版本:

    tomcat\webapps\webroot\WEB-INF\plugins\fdl_python下新建 config 文件夹。

    2)放入 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 表数据。如下图所示:

    8.png

    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变量指定当前算子的输出

    9.png

    2)点击「数据预览」,可看到生成的「书本编码」列。如下图所示:

    4.2.5.3 版本支持调试 Python,在 Python 算子中使用 print 语句,输出后点击「代码运行结果」,即可检查返回信息,调整  Python 代码,如下图所示:

    同时「代码运行结果」会展示运行过程中的日志,如下图所示:

    4.3 输出数据

    1)拖入「DB表输出」算子,将数据输出。如下图所示:

    11.png

    2)点击右上角「保存」按钮。

    4.4 效果查看

    任务执行成功后,生成的表数据如下图所示:

    5. 拓展阅读

    5.1 问题说明

    1)如果执行之后提示错误,显示脚本缺失或不存在文件夹,一般是由于权限引起的,需要将 plugins/fdl_python 的目录权限更改为777。

    2)较为新的 Linux 系统版本在使用PIP安装包时,会提示 "error: externally-managed-environment"错误,建议安装单独的 Python 作为 FDL 的 Python 运行环境然后通过对应环境的 PIP 来安装所需要的包。

    5.2 日志说明

    用户可在「任务控制>任务属性>日志等级设置」中,为定时任务单独设置日志输出级别,满足用户按需查看日志、调试和排错的需求。

    若需要详细的日志展示,在日志等级设置中,选择 INFO 即可。详情请参见:日志等级设置

    1726658615243418.png

    任务运行后,日志Tab 下展示具体日志:

    8.png

    5.2 Python 算子内存占用限制

    场景说明
    并发限制逻辑

    非容器化部署&容器化部署预览预览线程个数由 3.3 节 Python 配置文件中的python.developConcurrency决定,默认为5
    运行运行线程个数由由 3.3 节 Python 配置文件中的 python.concurrency决定,4.5.2.3 之前默认为5,之后默认为 1
    内存限制逻辑非容器化部署预览

    校验 Python 前置算子的数据量大小,Python 预览线程总内存=系统剩余内存*30%,然后平均分配给每个预览线程。

    比如系统剩余6g内存,Python 预览线程一共可用1.8g。如果有3个预览线程,每个预览线程就限制0.6g,前置算子数据量超过0.6g就会预览报错

    运行

    校验 Python 前置算子的数据量大小,Python 运行线程总内存=系统剩余内存*50%,然后平均分配给每个运行线程。

    比如系统剩余6g内存,Python 运行线程一共可用3g。如果有3个运行线程,每个运行线程就限制1g,前置算子数据量超过1g就会运行报错

    容器化部署预览容器化部署的FDL不校验内存
    运行




    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持