РЕДАКТИРОВАТЬ & Предупреждение: Не видел тег java. Это решение Scala, которое использует foldLeft
как al oop до go для всех столбцов. Если его заменить на Java дружественный l oop, все должно работать как есть. Я попытаюсь вернуться к этому позже.
Программным решением c может быть
val columns = result.columns
val randomColumnName = "RND"
val result2 = columns.foldLeft(result) { (data, column) =>
data
.withColumnRenamed(column, randomColumnName)
.withColumn(column,
when(col(randomColumnName).isNull, "")
.otherwise(concat(lit("\""), col(randomColumnName), lit("\"")))
)
.drop(randomColumnName)
}
. В результате получаются строки с "
вокруг них и запись будет пустой. строки в нуль. Если вам нужно сохранить пустые значения, просто сохраните их.
Затем просто запишите это:
result2.coalesce(1).write()
.option("delimiter", "|")
.option("header", "true")
.option("quoteAll", "false")
.csv(Location);