当前位置: 首页 > news >正文

PyFlink 两件事说清楚就够了

1) FLINK_HOME:决定“用哪套 Flink 发行版”来编译/提交

它影响什么

  • PyFlink 在提交前需要用 Flink 发行版做一些编译/打包相关的工作(比如拉起相关脚本、加载依赖、构建 JobGraph 等)。
  • PyFlink 的安装包里自带了一套 Flink distribution,默认会用它。
  • 你设置了FLINK_HOME后,相当于告诉 PyFlink:别用自带的,用我这套 Flink 发行版

什么时候一定要设

  • 你本机/集群 Flink 版本和 PyFlink 自带版本不一致,出现各种诡异兼容问题
  • 你希望明确绑定到公司统一安装的 Flink(比如/opt/flink-2.0.0
  • 你需要使用某些自带发行版里没有的脚本/插件布局(或者你做了定制发行版)

示例(Linux/macOS)

exportFLINK_HOME=/opt/flink-2.2.0

示例(Windows PowerShell)

setx FLINK_HOME"D:\flink-2.2.0"

2) PYFLINK_CLIENT_EXECUTABLE:决定“客户端用哪个 Python”来提交/编译 Python UDF

它影响什么

  • 注意是 Client Side:也就是你运行python xxx.pyflink run ...的那台机器。
  • PyFlink 在客户端侧需要 Python 来解析你的代码、序列化 UDF、处理依赖等。
  • 如果你机器上同时有多个 Python(conda / venv / 系统 Python),这个变量能避免“明明装了依赖却找不到 / Python 版本不对”的坑。

和配置项的关系

它等价于配置项:python.client.executable

并且优先级是(从高到低):

  1. 代码里设置的python.client.executable
  2. 环境变量PYFLINK_CLIENT_EXECUTABLE
  3. Flink 配置文件里设置的python.client.executable
  4. 都没设置就用默认python

示例:指定 conda / venv 的 python

Linux/macOS:

exportPYFLINK_CLIENT_EXECUTABLE=/home/xxx/miniconda3/envs/pyflink/bin/python

Windows PowerShell:

setx PYFLINK_CLIENT_EXECUTABLE"C:\Users\you\.conda\envs\pyflink\python.exe"

一个典型场景(写进博客很有用)

你本地跑脚本时用的是 venv 的 python,依赖都装在 venv 里,但flink run或 IDE 提交时实际用的是系统 python,于是报:

  • ModuleNotFoundError
  • Python 版本不在 3.9~3.12
  • pandas/pyarrow/beam 版本不对

这时候把PYFLINK_CLIENT_EXECUTABLE指向 venv 的 python,问题通常直接消失。

3) 一句话总结(给读者的“最短记忆”)

  • FLINK_HOME:选哪套 Flink 发行版(影响编译/提交路径与版本一致性)
  • PYFLINK_CLIENT_EXECUTABLE:选客户端用哪个 Python(避免依赖/版本错用)
http://www.jsqmd.com/news/230889/

相关文章:

  • Python包管理器 uv是否替代conda?
  • 【车辆路径规划】基于matlab人工势场法APF与快速探索随机树算法RRT全向车辆路径规划【含Matlab源码 14913期】
  • 2026必备!8个AI论文工具,继续教育学生轻松搞定论文格式规范!
  • Pandas比MySQL快?
  • VisionPro二开之相机类设计2
  • 2025年普通人怎么转向大模型?实战+落地+不空谈指南,非常详细收藏我这一篇就够了
  • DeepSeek-V4春节发布:AI编程能力新突破,超越GPT系列,技术人必看!收藏学习!
  • Python中同步异步编程原来是这样!附代码案例
  • 大模型技术入门:程序员如何抓住AI风口,抢占职场先机_35岁程序员抓住风口,转行AI大模型
  • Orange,可以拖拉拽的Python数据挖掘软件,强烈推荐~
  • 通信原理篇---双极性不归零码的功率谱密度
  • Anthropic大模型智能体评估全攻略:理论+实践,助你成为AI专家
  • 通信原理篇---单极性不归零码功率谱密度
  • HCIP代码小练-2
  • HCIP代码小练-1
  • 【Java集合】深入浅出 Java HashMap:从链表到红黑树的“进化”之路
  • 虚拟机假死?SSH 能连却卡 Logo 界面
  • 踩坑三个月,我用 Blazor 重构了一个 AI UI 协议,这些教训值得你看看
  • Java Web的学习路径
  • 通信原理篇---单极性归零码与双极性归零码
  • 【无人机路径规划】基于快速随机扩展树算法RRT避开长方体、圆柱体、球体三类障碍物,生成从起点到终点的无碰撞路径附matlab代码
  • C++ IDE
  • 浩思动力混动系统赋能吉利雷达金刚PHEV高性能皮卡上市
  • 《Numba AOT编译核心技术:斩断JIT启动延迟的实操手册》
  • 图像形态学+边缘检测及CNN关联
  • 连锁饮品店安全用电白皮书:能源设备智能管控与预警
  • “刷房子这点事,怎么就成了动态规划经典题?”——聊透 Paint House 背后的思维方式
  • PyFlink DataStream Operators 算子分类、函数写法、类型系统、链路优化(Chaining)与工程化踩坑
  • 【图像传输】基于MPSK算法实现图像传输系统附Matlab代码
  • 67、RNN的AI歌词生成案例(构建数据集)