首先我们要知道flink执行python udf默认使用的python是目前系统python所指向的版本 也就是你命令行输入python --version所显示的版本
通过flink官网我们可以得知可以通过以下方式设置python执行路径:- 在flink的bin目录下 flink-conf.yaml设置 python.client.executable: python所在路径。例如python.client.executable: /usr/bin/python3
- 在flink run时使用-pyarch 虚拟环境路径 -pyexec 虚拟环境路径中python所在路径。例如:-pyarch /home/user/venv.zip -pyexec venv.zip/venv/bin/python
- 可以在代码中通过table_env.get_config().set_python_executable()或者env.add_python_archive()还有table_env.get_config().get_configuration().set_string(‘python.client.executable’, ‘“/usr/bin/python3.6”’)设置
- 就是系统默认的python,该python可以通过以下方式修改
- 通过ln -s python3 python 建立软连接的方式
- 通过修改环境变量中的PYFLINK_CLIENT_EXECUTABLE
- 修改环境变量中python的指向
这些都是执行udf函数所用的,本身pyflink需要前文提到的系统本身默认的Python interpreter来运行,所以要确保python满足flink对于版本的要求。否则就会报错:
- RuntimeError: Python versions prior to 3.5 are not supported for PyFlink [sys.version_info(major=2, minor=7, micro=5, releaselevel=‘final’, serial=0)].
- RuntimeError: Python versions prior to 3.6 are not supported for PyFlink [sys.version_info(major=2, minor=7, micro=5, releaselevel=‘final’, serial=0)].



