gpt4 book ai didi

java - 捕获 Spark 驱动程序上的 Dataset foreachPartition() 函数中抛出的异常?

转载 作者:行者123 更新时间:2023-12-02 10:58:05 29 4
gpt4 key购买 nike

我正在尝试找到一种方法来捕获 Spark 在其驱动程序的 foreachPartition() 方法内引发的异常。在数据集上使用 foreachPartition() 时,我传递了一个在各个工作线程之间执行的 lambda 函数。此过程可能会引发异常。但我无法找到一种方法来捕获驱动程序上的此异常。看来这是设计使然。我可以做些什么来改变这种情况吗?以下是我当前正在做的事情的示例:

public static void driverClassExecute() {
Dataset<ModelDTO> dataset = getSomeData();
dataset.foreachPartition(AClass::methodCanThrowException);
//How can I recover if the above throws an exception?
}
public static void methodCanThrowException(Iterator<ModelDTO> it) throws Exception {
//do stuff. If bad, throw exception. This crashes the driver.
throw new Exception("any exception");
}

我还使用 Eclipse Oxygen IDE,以防编译器出现问题。

最佳答案

在这种情况下,foreachPartition 将抛出一个异常,因此您可以将该调用包装在 try-catch 中,并像任何其他异常一样进行处理,尽管 Spark 作业已经失败。为了避免作业失败,您必须在 methodCanThrowException 中处理异常。

关于java - 捕获 Spark 驱动程序上的 Dataset foreachPartition() 函数中抛出的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51561347/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com