Нулевое значение Apache Spark при приведении несовместимого типа DecimalType к ClassCastException - PullRequest
2 голосов
/ 15 апреля 2019

Кастинг DecimalType(10,5) например 99999.99999 до DecimalType( 5,4) в Apache Spark молча возвращает null

Можно ли изменить это поведение и позволить Spark генерировать исключение (например, некоторое исключение CastException) в этом случае и выполнить задание вместо того, чтобы молча вернуть null?

1 Ответ

0 голосов
/ 15 апреля 2019

Согласно документации по Git-хабу, https://github.com/apache/spark/blob/3ab96d7acf870e53c9016b0b63d0b328eec23bed/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala#L499

/ ** * Изменить точность / масштаб в данном десятичном исчислении на те, которые установлены в decimalType (если есть), * возвращает ноль, если он переполнен, или изменив value на месте и вернув его в случае успеха. * * ПРИМЕЧАНИЕ: это изменяет value на месте, поэтому не вызывайте его на внешнем данные. * /

Существует также другой поток, предполагающий, что не может быть прямого метода для сбоя кода, если он не может быть приведен. Искра: приведение к десятичному знаку без изменения свойства столбца . Так что, возможно, вы можете попробовать проверить значение null в приведенном столбце и создать логику для сбоя, если она есть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...