Spark 流式处理应用程序应在连续批处理失败后停止



我有一个带有Spark 2.3.1的DStream流应用程序。

其中我正在从 Kafka 读取数据并写入 Kerberized HDFS,但随机我的批处理在写入 HDFS 时开始失败,异常显示 kerberos 相关错误,但我的 Spark 应用程序继续运行,所以我不知道我的批处理失败,除非并且直到我检查日志。

我的问题是,有什么方法可以限制连续批处理故障转移的数量吗?建议是否存在某些属性,我们可以在其中设置批处理失败次数,之后应用程序应导致失败。例如。spark.streaming.xyz = 3,则应用应在连续3次微批处理失败后停止。

您可以维护某种变量(驱动程序级别的静态变量)并在遇到异常时继续递增它,一旦达到特定阈值(假设 3),您就可以关闭 Spark 流上下文以终止作业

try{
.
.
}catch(Exception e){
count++;
if(count>threshold)
streamingContext.close();
}

相关内容

最新更新