You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Flink 1.19.0调用in_streaming_mode()报FileNotFoundError求助

PyFlink启动报错FileNotFoundError: [WinError 2] 解决办法

问题描述

作为Apache Flink新手,运行PyFlink代码时在in_streaming_mode()方法处触发FileNotFoundError: [WinError 2] 系统找不到指定的文件错误。已安装Java 21,使用Flink 1.19.0版本,尝试过卸载重装组件但无效。

运行代码

from pyflink.table import EnvironmentSettings, TableEnvironment

setting = EnvironmentSettings.in_streaming_mode()
table_env = TableEnvironment.create(environment_settings=setting)

country_dict = {"1":"canda","2":"India"}
schema = ["id","country"]

table = table_env.from_elements(country_dict,schema=schema)

if __name__=="__main__"
    print(table.get_schema())
    print(table.execute())

错误栈(中文翻译)

回溯(最近的调用最后):
  文件"<stdin>", 第1行, 在<module>中
  文件"C:\Users\91889\AppData\Roaming\Python\Python311\site-packages\pyflink\table\environment_settings.py", 第229行, 在in_streaming_mode中
    return EnvironmentSettings.new_instance().in_streaming_mode().build()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  文件"C:\Users\91889\AppData\Roaming\Python\Python311\site-packages\pyflink\table\environment_settings.py", 第196行, 在new_instance中
    return EnvironmentSettings.Builder()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  文件"C:\Users\91889\AppData\Roaming\Python\Python311\site-packages\pyflink\table\environment_settings.py", 第53行, 在__init__中
    gateway = get_gateway()
              ^^^^^^^^^^^^^
  文件"C:\Users\91889\AppData\Roaming\Python\Python311\site-packages\pyflink\java_gateway.py", 第64行, 在get_gateway中
    _gateway = launch_gateway()
               ^^^^^^^^^^^^^^^^
  文件"C:\Users\91889\AppData\Roaming\Python\Python311\site-packages\pyflink\java_gateway.py", 第110行, 在launch_gateway中
    p = launch_gateway_server_process(env, args)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  文件"C:\Users\91889\AppData\Roaming\Python\Python311\site-packages\pyflink\pyflink_gateway_server.py", 第315行, 在launch_gateway_server_process中
    return Popen(list(filter(lambda c: len(c) != 0, command)),
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  文件"C:\Program Files\Python311\Lib\subprocess.py", 第1024行, 在__init__中
    self._execute_child(args, executable, preexec_fn, close_fds,
  文件"C:\Program Files\Python311\Lib\subprocess.py", 第1509行, 在_execute_child中
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] 系统找不到指定的文件

解决步骤

  • 检查Java环境变量配置

    1. 确认JAVA_HOME系统环境变量指向Java安装根目录(如C:\Program Files\Java\jdk-21),路径不能包含空格或特殊字符
    2. 将%JAVA_HOME%\bin添加到系统PATH环境变量的最顶端,避免其他Java版本干扰
    3. 重启命令提示符,执行java -version和javac -version,确认能正常输出版本信息
  • 手动在代码中指定Java路径
    在代码开头添加环境变量设置,强制PyFlink使用正确的Java路径:

    import os
    # 替换为你的Java实际安装路径
    os.environ["JAVA_HOME"] = "C:\\Program Files\\Java\\jdk-21"
    os.environ["PATH"] = os.path.join(os.environ["JAVA_HOME"], "bin") + ";" + os.environ["PATH"]
    
    from pyflink.table import EnvironmentSettings, TableEnvironment
    # 后续代码不变
    
  • 修复代码语法与数据格式问题

    1. if __name__=="__main__"末尾缺少冒号,修正为if __name__=="__main__":
    2. from_elements方法需要接收可迭代的元素(如元组列表),直接传字典会导致解析异常,修正数据格式:
      # 修正字典为元组列表,同时修正拼写错误canda→canada
      country_data = [("1", "canada"), ("2", "India")]
      table = table_env.from_elements(country_data, schema=schema)
      
  • 降级Java版本到兼容版本
    Flink 1.19.0官方仅支持Java 8、11、17,Java 21属于非兼容版本,容易出现启动问题。卸载Java 21,安装Java 17并重新配置环境变量后重试。

  • 重装PyFlink确保完整性
    执行以下命令强制重装指定版本的PyFlink:

    pip uninstall -y apache-flink
    pip install apache-flink==1.19.0 --force-reinstall
    

内容的提问来源于stack exchange,提问作者Bhaskar Arya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 06:00:04