2016-04-07 3 views
0

Я использую 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 правильно. Это ошибка?

+0

Каковы исходные файлы csv? как вы их читаете с помощью искро-csv? –

+2

Причина, по которой @MiladKhajavi спрашивает, если это текстовые файлы, и вы смотрите на них с помощью hadoop fs -text/my/dir/*, у вас, вероятно, есть несколько файлов, поэтому есть несколько заголовков. –

+0

@MiladKhajavi, я читаю их Spark SQL (в частности, используя API Databricks). Я читаю из нескольких файлов CSV, но объединяя их вместе, используя Spark SQL dataframes. Я ожидаю, что как только они будут объединены, будет только 1 строка заголовка. – dmux

ответ

0

Я считаю, что я нашел решение, используя partition() и coalesce() функции:

bigTable.repartition(1).coalesce(1).write().format("com.databricks.spark.csv").option("header", "true").save("myoutputfile.csv"); 

После добавления этих вызовов файл CSV имеет выход я бы ожидать.

Смежные вопросы