#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. Я полагаю, что нет, но придется перепроверить