Spark 2.4 CSV Load Issue с ​​опцией «нулевое значение» - PullRequest
2 голосов
/ 25 июня 2019

Раньше мы использовали Spark 2.3, сейчас мы находимся на 2.4:

Spark version 2.4.0
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 1.8.0_212)

У нас был запущенный кусок кода, который преобразовал файлы CSV в формат паркета.Одной из опций, которые мы установили для загрузки csv, является опция («nullValue», нуль).Что-то не так с тем, как это работает в spark 2.4.

Вот пример, показывающий проблему.

  1. Давайте создадим следующий файл /tmp/test.csv:
C0,C1,C2,C3,C4,C5
1,"1234",0.00,"","D",0.00
2,"",0.00,"","D",0.00

Теперь, если мы загрузим его в искровую оболочку
scala> val data1 = spark.read.option("header", "true").option("inferSchema", "true").option("treatEmptyValuesAsNulls","true").option("nullValue", null).csv("file:///tmp/test.csv")

we get an empty row:
scala> data1.show
+----+----+----+----+----+----+
| C0| C1| C2| C3| C4| C5|
+----+----+----+----+----+----+
| 1|1234| 0.0| | D| 0.0|
|null|null|null|null|null|null|
+----+----+----+----+----+----+

Если мы немного изменим CSV (заменив пустую строку на «1» в последнем ряду)
C0,C1,C2,C3,C4,C5
1,"1234",0.00,"","D",0.00
2,"",0.00,"1","D",0.00

результат будет еще хуже:

scala> val data2 = spark.read.option("header", "true").option("inferSchema", "true").option("treatEmptyValuesAsNulls","true").option("nullValue", null).csv("file:///tmp/test.csv")

scala> data2.show
+----+----+----+----+----+----+
| C0| C1| C2| C3| C4| C5|
+----+----+----+----+----+----+
|null|null|null|null|null|null|
|null|null|null|null|null|null|
+----+----+----+----+----+----+

Это ошибка в новой версии spark 2.4.0?Кто-нибудь сталкивался с подобной проблемой?

...