Использование подстановочного знака для открытия нескольких CSV-файлов Spark Scala

Привет, я говорю, что у меня есть несколько таблиц с одинаковыми заголовками, хранящимися в нескольких файлах .csv.

Я хочу сделать что-то вроде этого

scala> val files =  sqlContext.read
.format("com.databricks.spark.csv")
.option("header","true")
.load("file:///PATH_TO_FILE/*.csv")

Но когда я это делаю, я получаю дополнительные столбцы из заголовков других файлов.

В простом случае у меня есть 2 файла .csv, когда я загружаю их по отдельности, а затем объединяю с помощью unionAll, я получаю нужное количество строк. Но когда я пытаюсь сделать это выше, чтобы загрузить их, я получаю дополнительную строку (из строки заголовка второго файла). Загрузка их по отдельности, а затем объединение их воедино не сработает, так как может быть много файлов, которые мне нужно открыть.

Есть ли способ сделать вышеизложенное, чтобы дополнительные заголовки не включались


person user2770808    schedule 22.06.2016    source источник


Ответы (1)


Возможно, в конечном итоге вам придется присоединиться ко всем из них. Чтобы сделать это сразу, вы можете попробовать что-то вроде ниже.

//Get all the individual file paths
def getListOfFiles(dir: File):List[File] = dir.listFiles.filter(_.isFile).toList
val filelist = getListOfFiles(new File("file:///PATH_TO_FILE/"))

//Read from the list of files you created
val Files= filelist.map(file => { sqlContext.read.format("com.databricks.spark.csv").option("header","true").load(file.getPath.toString) })

//Merge all the data into a single rdd
val mergedFile= Files.reduce((x, y) => x.unionAll(y))
person Akarsh    schedule 23.06.2016