开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

在Flink为啥执行env.addSource后不往下执行env.excute了?

我在多线程里面单独创建StreamExecutionEnvironment 执行env.addSource数据查询,然后env.excute,
在Flink为啥执行env.addSource后不往下执行env.excute了?导致任务没有提交
也不报错,没有flink client的提交日志

展开
收起
三分钟热度的鱼 2023-11-30 16:24:19 108 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在 Flink 中,当使用多线程并单独创建 StreamExecutionEnvironment 执行 env.addSource 数据查询后,并调用 env.execute 方法时,如果任务没有提交且没有报错,可能有以下几种原因:

    1. 缺少触发条件:StreamExecutionEnvironmentexecute 方法需要一个触发条件来启动流处理作业。如果没有设置触发条件,Flink 不会执行作业并等待触发条件的到达。

    解决方案:确保在 StreamExecutionEnvironment 中设置了适当的触发条件,例如时间窗口、事件数量或水位线等,使作业可以按照预期触发执行。

    1. 代码顺序问题:请检查您的代码是否正确顺序执行。确认 env.addSource 完成后再调用 env.execute。确保在调用 env.execute 之前没有发生任何阻塞或错误导致代码无法继续执行。

    2. 线程池问题:如果您在多线程环境中使用了自定义的线程池,可能存在线程池配置不当导致任务无法提交的问题。请确保线程池的大小和配置与您的需求相匹配,并适当地管理线程池的生命周期。

    2023-11-30 21:44:48
    赞同 展开评论 打赏
  • 在多线程环境中,如果遇到 env.addSource 添加数据源后没有执行到 env.execute 的情况,并且没有任何错误信息和客户端提交日志,这可能是由于以下原因:

    1. 同步/异步问题
      在多线程环境下,如果你使用了非阻塞的添加操作(如异步调用),那么你可能需要等待这些操作完成后再进行下一步。你可以考虑使用适当的同步机制来确保所有任务都已完成。

    2. 代码顺序问题
      检查你的代码逻辑,确保 addSourceexecute 之间的其他代码不会导致程序中断或跳过执行 execute 方法。

    2023-11-30 17:17:39
    赞同 1 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载