Исключение числового формата при записи файла паркета с использованием Spark, вызванное тем, что некоторые поля имеют неизвестное значение
Я читаю текстовый файл, используя спарк со схемой ниже.
root
|-- id: long (nullable = true)
|-- name: string (nullable = true)
|-- style: string (nullable = true)
|-- code: integer (nullable = true)
|-- state_code: integer (nullable = true)
|-- post_code: integer (nullable = true)
|-- mail: string (nullable = true)
Вот мой код Scala
val myDf = sqlContext.read.format("csv")
.option("header", "true")
.option("inferSchema", "false")
.schema(myschema)
.option("delimiter", "|")
.option("nullValue", "")
.option("treatEmptyValuesAsNulls", "true")
.load("Path to file")
Здесь, в этом входном файле, некоторые coulmns имеют значение как \N. Я хотел поменять все аргументы coulmn, имеющие значение "\N", на пустое (""). Когда я пытаюсь записать этот фрейм данных в виде файла паркета
myDf.na.replace(myDf.columns.toSeq, Map("\\N" -> "")).write.format("parquet").save("path to output")
Это исключение
java.lang.NumberFormatException: For input string: "\N"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:12)
at java.lang.Integer.parseInt(Integer.java:80)
Любая помощь в написании файла паркета, решая проблему?
1 ответ
Угадайте, исключение происходит не в письменной форме, а во время чтения.
Если схема с полями int, назначенными для файла CSV, и значения полей в файле содержат "\N
", такая ошибка может произойти.
Думаю, вы можете заменить сохранение в Parquet другим действием (шоу и т. Д.) И получить то же исключение.