Как написать стандарт CSV - PullRequest
       83

Как написать стандарт CSV

0 голосов
/ 28 сентября 2019

Очень просто прочитать стандартный файл 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"), какая-то подсказка?

...