Просто проверьте, является ли значение NOT NULL
перед кастом и NULL
после кастинга
import org.apache.spark.sql.functions.when
df
.withColumn("class_integer", $"class".cast("integer"))
.withColumn(
"class_corrupted",
when($"class".isNotNull and $"class_integer".isNull, $"class"))
Повторите для каждого нужного столбца / каста.