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

Flink这个问题怎么解决?

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

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

    这个问题可能与多线程环境中的 Flink 环境初始化和执行有关。当在多线程中使用 Flink 时,需要注意以下几点:

    1. 单例 StreamExecutionEnvironment:通常情况下,你应该在一个应用中只创建一个 StreamExecutionEnvironment 实例,并且这个实例应该在主线程中创建。如果你在多个线程中分别创建了 StreamExecutionEnvironment,可能会导致一些难以预料的行为。

    2. 同步操作:确保你的多线程代码是同步的。在添加源(addSource)和执行(execute)之间可能存在竞争条件或锁的问题。你可以尝试使用 Java 的 synchronized 关键字或者并发工具来控制对共享资源的访问。

    3. 异常处理:即使没有显示的错误日志,也可能是由于未捕获的异常导致程序停止运行。你可以在添加源和执行之间的代码块中加入 try-catch 块,以查看是否有任何隐藏的异常。

    4. 调试模式:将 Flink 配置为调试模式并启用详细的日志记录,以便更好地理解程序的执行过程。这可以通过设置系统属性 -Dlog.level=DEBUG 或者在 flink-conf.yaml 文件中配置 log4j.logger.org.apache.flink=DEBUG 来实现。

    5. 检查数据源:确保你在 addSource 中提供的数据源是有效的并且能够正常返回数据。如果数据源有问题,Flink 可能会卡在那里而不会继续执行。

    6. 关闭策略:检查 Flink 作业的关闭策略是否正确。有时候,不正确的关闭策略可能导致作业无法正常结束,从而使得后续的操作不会被执行。

    7. 客户端问题:虽然你说没有看到 Flink 客户端的提交日志,但还是建议检查客户端的日志文件,看看是否有其他相关的错误信息。

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

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

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载