Spark прочитал CSV - не показываются записи - PullRequest
1 голос
/ 30 октября 2019

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, я получаю сообщение об ошибке при попытке просмотреть данные.

1 Ответ

0 голосов
/ 30 октября 2019

Добавление _corroup_record, как предложили Эндрю и Пратик, решило проблему.

import org.apache.spark.sql.types.{StructField, StructType, StringType, LongType, DecimalType}
val schema = new StructType(Array(
  new StructField("value", DecimalType(25,10), true),
  new StructField("_corrupt_record", StringType, true)
))
val df = spark.read.format("csv") 
  .option("header", "true") 
  .option("mode", "PERMISSIVE") 
  .schema(schema) 
  .load("../test.csv")

запрос данных

scala> df.show()
+-------------+---------------+
|        value|_corrupt_record|
+-------------+---------------+
|10.0000000000|           null|
|11.0000000000|           null|
|         null|         $12.00|
|         null|            $13|
|         null|        gaurang|
+-------------+---------------+
...