Apache spark spark streaming-在foreachrdd中始终广播变量

Apache spark spark streaming-在foreachrdd中始终广播变量,apache-spark,streaming,Apache Spark,Streaming,假设我们有一个spark流媒体作业,每5秒运行一次。这里我们有一个foreachRDD语句,其中广播了一个变量。问题是,即使每个RDD没有更改,广播变量是否每次都会广播 第二,基于某种条件,比如1小时后,如果我使用unpersist()更新这个广播变量(即BC变量指向的引用数据结构),然后重新广播这个BC变量,这也将只向所有工作人员广播一次还是多次广播,即在每个foreachRDD循环中广播一次?如果在foreachRDD调用中创建广播变量: stream.foreachRDD(rdd =>

假设我们有一个spark流媒体作业,每5秒运行一次。这里我们有一个foreachRDD语句,其中广播了一个变量。问题是,即使每个RDD没有更改,广播变量是否每次都会广播


第二,基于某种条件,比如1小时后,如果我使用unpersist()更新这个广播变量(即BC变量指向的引用数据结构),然后重新广播这个BC变量,这也将只向所有工作人员广播一次还是多次广播,即在每个foreachRDD循环中广播一次?

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

stream.foreachRDD(rdd => {
  val broadcast = ???
  ...
})
为每个批次创建并传输此变量。包装变量是否更改并不重要

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