在 Spark 执行器中引发异常时会发生什么情况?



我有一个火花结构化的流作业,我正在使用mapPartitions,其中它连接到mongo客户端并使用mongo中的数据丰富来自kafka的流数据。有时,mongo 无法连接,并且在其中一个执行器任务中出现异常。但是作业不会停止,但它也会停止消耗来自 kafka 的数据。它进入挂起状态。

目前,我正在做通常的事情,

try{
//enrich data
} catch {
case e: Exception => {
e.printStackTrace()
sys.exit(0)
}
} finally {
//close mongo connection
}

如果我在执行程序中引发异常,驱动程序是否会捕获异常?此外,是否有更好的方法来处理此类连接异常,以便执行程序在重新连接后重新启动。

分别在 Spark 和 Hadoop 中设置以下配置以进行重试

spark.task.maxFailures

yarn.resourcemanager.am.max-try

重试后,异常将引发回驱动程序。

此外,挂起状态可能是您的 mongo 客户端等待超时。请参阅下文以设置较短的超时属性

https://api.mongodb.com/python/current/api/pymongo/mongo_client.html#pymongo.mongo_client.MongoClient

相关内容

最新更新