Как правильно обработать исключение в операторе flink? - PullRequest
2 голосов
/ 15 марта 2019

Если я брошу исключение времени выполнения в оператор flink, как оно будет обработано?

Я просто хочу проигнорировать это исключение и продолжить обработку потока, но я не знаю побочного эффекта, если я просто игнорирую их. Остановит ли это исключение весь поток данных?

1 Ответ

1 голос
/ 15 марта 2019

Если один из ваших операторов выдаст исключение, вся работа завершится неудачей. Он не сильно отличается от обычного приложения: если исключение не обрабатывается кем-либо, приложение завершится ошибкой.

Подумайте об этом так: вы бросаете исключение, если не знаете, как справиться с определенной ситуацией - это как-то указывает на то, что тот, кто позвонил мне, должен позаботиться об этом. По крайней мере, я не знаю, как вы могли бы сказать Флинку: пожалуйста, игнорируйте мои исключения.

Мое предложение: обработка исключений внутри ваших операторов. Это может означать, что вам нужно изменить тип оператора (или, по крайней мере, тип возвращаемого значения).

1007 * Е.Г. *

case class MyMapper() extends MapFunction[Double, Double] {
    override def map(in : Double) : Double {
       try {
            1/in
       }
       catch {
            case e : java.lang.ArithmeticException:
                throw new RuntimeException(e)
       }
    }
}

Может стать оператором FlatMap, просто ничего не возвращая. Или вы измените тип возврата этого оператора, чтобы он возвращал Option типа Double вместо Double.

Надеюсь, это поможет

...