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

各位,我用spark在driver广播一个string,然后在executor端用.value把广播

各位,我用spark在driver广播一个string,然后在executor端用.value把广播的值取出来封装一个单例对象。最后把单例对象的值取出打印。结果发现不是所有executor都有值,有些是null。请问一下大家遇到过这个问题吗?

展开
收起
游客3oewgrzrf6o5c 2022-07-07 15:12:03 328 0
1 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    你好!如果在Spark中使用广播变量,可以使用Spark的broadcast()方法将变量广播到每个Executor中。在Executor端,可以使用broadcast()方法获取广播变量的值。但是,有时候可能会出现一些Executor没有接收到广播变量的情况,这可能是由于以下几个原因导致的:

    网络故障:在广播变量时,如果网络出现故障,可能会导致一些Executor没有接收到广播变量的值。
    Executor数量过多:如果Executor数量过多,可能会导致广播变量无法全部分发到每个Executor中,从而导致一些Executor没有接收到广播变量的值。
    Executor启动延迟:在Executor启动时,可能会出现一些延迟,导致一些Executor在启动后无法立即接收到广播变量的值。
    为了解决这个问题,可以尝试以下几种方法:

    检查网络状况:检查网络是否正常,如果网络出现故障,可以尝试重试广播变量的操作。
    控制Executor数量:可以尝试控制Executor的数量,减少Executor的数量,以确保每个Executor都能接收到广播变量的值。
    等待Executor启动:可以在启动Executor时等待一段时间,以确保每个Executor都能启动并接收到广播变量的值。
    希望以上回答能够帮助到你!

    2023-08-16 13:29:45
    赞同 展开评论 打赏

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

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载

相关实验场景

更多