Запись CSV в Spark scala с опцией escape и цитатой вместе разрывает CSV-файл

#scala #apache-spark #apache-spark-sql

Вопрос:

Входные данные приведены ниже:

Имя Текст
А’ Ди,Джон
B «AB
C A»B»
D Это «78-DC-DF-001″20 23:11:01 — 12323

Я использую приведенный ниже код для записи вышеуказанных данных в файл CSV(вывод-это фрейм данных, содержащий входные данные).:

 output.coalesce(1).write
.format("csv")
.option("escape","")
.option("quote","")
.save("Output")
 

Когда я использую только опцию escape, вывод выглядит так, как показано ниже, что неправильно:

Имя Текст
А’ Ди,Джон
B «AB»»
C A»»B»»»»
D Это «»78-DC-DF-001″»20 23:11:01 — 12323″»

И когда я использую как escape, так и кавычки вместе, это смещает значения запятой, как показано ниже:

Имя Текст
А’ D Джон
B «AB
C A»B»
D Это «78-DC-DF-001″20 23:11:01 — 12323

Любые предложения о том, как решить эту проблему в spark scala. Требуется тот же ввод, что и вывод.

Комментарии:

1. Неясно, как вы читаете и обрабатываете свои данные перед записью в выходные данные. И никакого понятия о типе output переменной. Как я вижу, вы не установили разделитель или если у вас есть заголовки, включенные во входные данные. Разделителем по умолчанию является запятая, которая объясняет ваш последний вывод, разделенный запятыми.

2. @PubuduSitinamaluwa Я прочитал данные из файла CSV и сохранил их в кадре выходных данных, и я записываю этот кадр данных в файл CSV. Я провожу этот эксперимент, потому что у меня большой набор данных, и он содержит одинаковые значения в разных столбцах. Здесь я ничего не обрабатываю в промежутке между чтением и записью фрейма данных, но эта практика устранит проблему. Я пишу здесь файл CSV, поэтому разделитель я не упомянул, потому что по умолчанию используется запятая.

3. Используйте вкладку для разделителя.