Раньше мы использовали 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.
Вот пример, показывающий проблему.
- Давайте создадим следующий файл /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?Кто-нибудь сталкивался с подобной проблемой?