#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. Используйте вкладку для разделителя.