Это то, что я сделал, чтобы решить мою проблему:)
Сначала я разбиваю фрейм данных в соответствии с именем столбца, записываю каждый раздел в файл csv и сохраняю его в новой папке.
df
.write
.partitionBy("column name")
.csv("path_to_save_csv_file")
Во-вторых, я собираю имена CSV-файлов в указанной выше папке в список.
val dir = new File("path_to_save_csv_file")
val file: List[String] = dir
.listFiles
.filter(_.isFile)
.filter(_.getName.endsWith(".csv"))
.map(_.getName)
.toList
После этого я читаю каждый CSV-файл в кадре данных с помощью цикла.
for (fileName <- file){
val df_fileName = spark
.read
.option("header", true)
.csv("path_to_save_csv_file"+fileName)
.toDF(classOf[caseClass_name].getDeclaredFields.map(x => x.getName):_*)
.as[caseClass_name]
}
Втаким образом, я могу легко поместить свою логику в каждый раздел.
Должно быть другое лучшее решение для решения этой проблемы.Как новичок я поставил этот ответ в соответствии со своими знаниями.Я только публикую свой ответ, чтобы дать представление о том, кто нуждается в помощи, как я:)