我对Spark工作的工作方式感到有些困惑。我有一个用例,其中Spark为同一批次运行两个作业,因此加倍执行该批次的数据的时间。 对于例如我正在简化我的代码,并写下如下。我在foreachRDD中有两个Spark动作。
但很明显,只有当第一个动作在if子句内部时才会执行第二个动作(这是假的)。
但是我可以在Spark UI中看到,对于每个批次,有两个作业在运行,因此在批处理中执行数据的时间加倍。 只是为了验证我是否删除了第一个动作和if子句,作业数量减少到一个。
那么,是否有足够的智慧来确定if条件? ,只看一下foreachRDD块中定义的动作数量? 正如您可以看到下面的图像,有两个工作1322,1323。 如果我进入这些工作,他们都正在进行第二次行动。
JavaInputDStream<ConsumerRecord<String, String>> messages = ....
messages.foreachRDD(rdd - > {
if(false){
rdd.count();
}
rdd.count();
});