Spark中foreachRDD内的多个动作

时间:2018-04-05 13:36:59

标签: apache-spark spark-streaming

我对Spark工作的工作方式感到有些困惑。我有一个用例,其中Spark为同一批次运行两个作业,因此加倍执行该批次的数据的时间。 对于例如我正在简化我的代码,并写下如下。我在foreachRDD中有两个Spark动作。

但很明显,只有当第一个动作在if子句内部时才会执行第二个动作(这是假的)。

但是我可以在Spark UI中看到,对于每个批次,有两个作业在运行,因此在批处理中执行数据的时间加倍。 只是为了验证我是否删除了第一个动作和if子句,作业数量减少到一个。

那么,是否有足够的智慧来确定if条件? ,只看一下foreachRDD块中定义的动作数量? 正如您可以看到下面的图像,有两个工作1322,1323。 如果我进入这些工作,他们都正在进行第二次行动。

Spark UI showing two jobs for same data

JavaInputDStream<ConsumerRecord<String, String>> messages = ....

messages.foreachRDD(rdd - > {
if(false){
  rdd.count();
}

rdd.count();
});

0 个答案:

没有答案