Как уже упоминалось, кавычки должны использоваться в файлах CSV.Если это не вариант, это вполне выполнимо с использованием отрицательного регулярного выражения.Учитывая файл CSV
h1,h2,h3,h4,h5
A,B,C(temp, temp1, temp3),D,E
A,B,C,D,E
и предполагая, что |
не содержится в файле (можно использовать любой символ)
val txt = spark.read
.textFile(path)
.map(_.replaceAll(",(?!\\s)", "|"))
spark.read
.option("delimiter", "|")
.option("header", "true")
.csv(txt)
.show(20, false)
Вывод:
+---+---+---------------------+---+---+
|h1 |h2 |h3 |h4 |h5 |
+---+---+---------------------+---+---+
|A |B |C(temp, temp1, temp3)|D |E |
|A |B |C |D |E |
+---+---+---------------------+---+---+
Таким образом, мы все еще можем извлечь выгоду из таких функций синтаксического анализатора CSV, как пропуск заголовка и вывод схемы, если это необходимо.