Очень просто прочитать стандартный файл CSV , например:
val t = spark.read.format("csv")
.option("inferSchema", "true")
.option("header", "true")
.load("file:///home/xyz/user/t.csv")
Он читает настоящий файл CSV, что-то вроде
fieldName1,fieldName2,fieldName3
aaa,bbb,ccc
zzz,yyy,xxx
и t.show
дал ожидаемый результат.
Мне нужно обратное, для записи стандартного файла CSV (не каталог нестандартных файлов).
Этоочень неприятно не видеть обратный результат при использовании write
.Может быть, существует какой-то другой вариант или какой-то format (" REAL csv please! ")
.
ПРИМЕЧАНИЯ
Я использую Spark v2.2 и запускаю тесты на Spark-shell .
"Синтаксическая инверсия" read is write , поэтому ожидается, что с ним будет получено файла того же формата ,Но результатом
t.write.format("csv").option("header", "true").save("file:///home/xyz/user/t-writed.csv")
является не CSV-файл rfc4180 стандартного формата, как в оригинальном t.csv
, а папка t-writed.csv/
с файлом part-00000-66b020ca-2a16-41d9-ae0a-a6a8144c7dbc-c000.csv.deflate _SUCCESS
, который выглядит"паркет", "ORC" или другой формат.
Любой язык с полным набором вещей, который "читает что-то", способен "написать что-то", это своего рода принцип ортогональности.
Похоже, что не решает
Подобный вопрос или ссылки, которые не решили проблему, возможно, использовали несовместимую версию Spark, или, возможно, spark-shell ограничениеиспользовать это.У них есть хорошие подсказки для экспертов:
Этот подобный вопрос, указанный @ JochemKuijpers : я пытаюсь предложить, но получаю тот же уродливый результат.
Эта ссылка говорит о том, что есть решение (!), Но я не могу скопировать / вставить saveDfToCsv()
в мою оболочку spark ( "ошибка: не найдено: тип DataFrame"), какая-то подсказка?