Почему Apache Spark выполняет некоторые проверки и создает эти исключения во время выполнения задания, но никогда не создавал их во время модульного тестирования?

#scala #apache-spark #apache-spark-sql #spark-structured-streaming #apache-spark-3.0

Вопрос:

В моем коде Scala была ошибка, форматирующая дату метки времени, которая затем была объединена в виде строки в какой-то столбец без метки времени в потоковой передаче Spark:

 concat(date_format(col("timestamp"),"yyyy-MM-DD'T'HH:mm:ss.SSS'Z'")  

Итак, во время тестов все было в порядке, и тесты, отправляющие сообщения Кафке, были пройдены, и я смог увидеть эти сообщения в инструменте Кафки:

введите описание изображения здесь

Не 292-е октября там из DD -за того, что вместо dd этого в форматтере.

Но затем в исполнителе это была какая-то дополнительная проверка, которая не была пройдена, и работа потерпела крах:

 Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 8.0 failed 1 times, most recent failure: Lost task 1.0 in stage 8.0 (TID 12, kafkadatageneratorjob-driver, executor driver): org.apache.spark.SparkUpgradeException: You may get a different result due to the upgrading of Spark 3.0: Fail to format it to '2021-10-292T14:27:12.577Z' in the new formatter. You can set spark.sql.legacy.timeParserPolicy to LEGACY to restore the behavior before Spark 3.0, or set to CORRECTED and treat it as an invalid datetime string.  

Как включить такую же строгую проверку модульных тестов, чтобы они также не выполнялись при этих проверках без явной проверки значения, а просто заставляли timeParserPolicy также выполняться в тестах.

Комментарии:

1. вы используете более старую версию spark jar (

2. Я полагаю, что нет, но придется перепроверить