【问题标题】:spark streaming - in foreachrdd is broadcast variable broadcasted all the time火花流 - 在 foreachrdd 中是一直广播的广播变量
【发布时间】:2017-02-13 02:38:29
【问题描述】:

假设我们有一个每 5 秒运行一次的 Spark 流式传输作业。这里我们有一个 foreachRDD 语句,我们在其中广播一个变量。问题是每个RDD的广播变量是否每次都广播,即使它没有改变?

其次基于某些条件说1小时后,如果我使用unpersist()更新这个广播变量(意味着引用数据结构,BC变量指向)然后重新广播这个BC变量,这也会被广播吗仅对所有工作人员一次或多次,即在每个 foreachRDD 循环中一次?

【问题讨论】:

    标签: apache-spark streaming


    【解决方案1】:

    如果您在foreachRDD 调用中创建广播变量:

    stream.foreachRDD(rdd => {
      val broadcast = ???
      ...
    })
    

    为每个批次创建和传输此变量。包装变量是否更改并不重要。

    您还应该记住,在 Spark Streaming (cannot be recovered from checkpoint) 中使用时,广播变量并不完全可靠,通常不应修改广播变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      相关资源
      最近更新 更多