Spark имеет режим Permissive
для чтения файлов CSV
, в котором записанные записи хранятся в отдельном столбце с именем _corroupt_record
.
permissive - Устанавливает все поля в NULL при обнаружении поврежденной записи и помещает все поврежденные записи в строковый столбец с именем _corrupt_record
Однако, когда я пытаюсь выполнить следующий примерЯ не вижу ни одного столбца с именем _corroupt_record
. записи, которые не соответствуют схеме, выглядят как null
data.csv
data
10.00
11.00
$12.00
$13
gaurang
код
import org.apache.spark.sql.types.{StructField, StructType, StringType, LongType, DecimalType}
val schema = new StructType(Array(
new StructField("value", DecimalType(25,10), false)
))
val df = spark.read.format("csv")
.option("header", "true")
.option("mode", "PERMISSIVE")
.schema(schema)
.load("../test.csv")
схема
scala> df.printSchema()
root
|-- value: decimal(25,10) (nullable = true)
scala> df.show()
+-------------+
| value|
+-------------+
|10.0000000000|
|11.0000000000|
| null|
| null|
| null|
+-------------+
Если я изменяю режим на FAILFAST
, я получаю сообщение об ошибке при попытке просмотреть данные.