Исключение числового формата при записи файла паркета с использованием 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 другим действием (шоу и т. Д.) И получить то же исключение.

Другие вопросы по тегам