Я пытаюсь прочитать файл CSV, который использует обратную косую черту, чтобы избежать разделителей вместо использования кавычек. Я попытался построить DataFrameReader без qoutes и с escape-символом, но он не работает. Кажется, опция «побег» может использоваться только для того, чтобы избежать символов кавычек. Есть ли способ обойти это иначе, чем формировать пользовательский формат ввода?Spark 2.0 Scala - Чтение csv-файлов с экранированными разделителями
Вот варианты, которые я использую сейчас:
spark.read.options(Map(
"sep" -> ",",
"encoding" -> "utf-8",
"quote" -> "",
"escape" -> "\\",
"mode" -> "PERMISSIVE",
"nullValue" -> ""
Для примера скажем, мы имеем следующие данные выборки:
схемы: Имя, город
Joe Bloggs,Dublin\,Ireland
Joseph Smith,Salt Lake City\,\
Utah
Это должно вернуть 2 записи:
Name | City
-----------------|---------------
Joe Bloggs | Dublin,Ireland
Joseph Smith | Salt Lake City,
Utah
Будучи в состоянии избежать новых строк, было бы неплохо, но нужно избегать разделителя столбцов. Пока я думаю о чтении строк с помощью spark.textFile, а затем используя некоторую библиотеку CSV для разбора отдельных строк. Это устранит мою проблему с разделителем столбцов, но не экранирует строки.
Вы можете предоставить примерный формат строки? –
Я думаю, что вы правы, pls [check] (https://github.com/databricks/spark-csv/blob/master/src/main/scala/com/databricks/spark/csv/package.scala) –
Пример данные добавляются к вопросу. –