Я использую Spark SQL для загрузки больших файлов CSV и объединения их в общий столбец. После выполнения соединения в моем коде, я хотел бы сохранить таблицу обратно в новый файл CSV. Для этого я использую метод write()
DataFrame. После проверки файла я был удивлен, увидев, что заголовок напечатан несколько раз, за которым следуют данные, за которым следуют другие заголовки. Например:Несколько строк заголовка печатаются при записи с помощью Spark SQL
name, age, addr, job, salary
name, age, addr, job, salary
name, age, addr, job, salary
Bob, 34, 123 Fake St, Programmer, 10000000
June, 23, 5 Tree Ave., College Student, 15000
Rick, 12, 43 Ware St., Student, 0
name, age, addr, job, salary
name, age, addr, job, salary
name, age, addr, job, salary
<more data here>
Этот вывод является неожиданным, тем более, что show()
метод Класс DataFrame в печатает таблицу на консоль и отображает то, что я ожидал.
код я использую для выполнения записи:
bigTable.write().mode(SaveMode.Overwrite).format("com.databricks.spark.csv")
.option("header", "true").save(settings.getValue().outputDir +"/bigTable.csv");
При использовании параметра option("header", "false")
значения данных сохраняются в формате CSV правильно. Это ошибка?
Каковы исходные файлы csv? как вы их читаете с помощью искро-csv? –
Причина, по которой @MiladKhajavi спрашивает, если это текстовые файлы, и вы смотрите на них с помощью hadoop fs -text/my/dir/*, у вас, вероятно, есть несколько файлов, поэтому есть несколько заголовков. –
@MiladKhajavi, я читаю их Spark SQL (в частности, используя API Databricks). Я читаю из нескольких файлов CSV, но объединяя их вместе, используя Spark SQL dataframes. Я ожидаю, что как только они будут объединены, будет только 1 строка заголовка. – dmux