Regex 加载带有通配符的csv文件以匹配模式
我有24个csv文件,其中包含0到23个名称,例如hyper01.csv、hyper02.csv、…、hyper23.csv。但我只想使用通配符将文件从08加载到15Regex 加载带有通配符的csv文件以匹配模式,regex,csv,apache-spark,filepath,Regex,Csv,Apache Spark,Filepath,我有24个csv文件,其中包含0到23个名称,例如hyper01.csv、hyper02.csv、…、hyper23.csv。但我只想使用通配符将文件从08加载到15 目前我正在使用文件夹_name/*{08-15},但它不起作用我正在使用spark如果您使用的是scala,您可以尝试以下方法: def getPaths(dir: String): List[String] = { val file = new File(dir) file.listFiles.filter(
目前我正在使用文件夹_name/*{08-15},但它不起作用我正在使用spark如果您使用的是scala,您可以尝试以下方法:
def getPaths(dir: String): List[String] = {
val file = new File(dir)
file.listFiles.filter(_.isFile)
.filter(_.getName.startsWith("hyper"))
.filter(s=>{
val index = s.getName.replace("hyper", "")
.replaceFirst("0", "")
.replaceAll("\\.(.*)","")
.toInt
index >= 8 && index <= 15
})
.map(_.getPath).toList
}
val filesDirectory = "C:\\Users\\user\\hyper"
getPaths(filesDirectory).foreach(println(_))
val df = spark.read.csv(getPaths(filesDirectory):_*)
Scala小函数可用于获取所需文件:
def getDirs(root: String, start: Int, end: Int): Seq[String] = {
(start to end).map(v => f"$root/hyper$v%02d.csv")
}
// usage
spark.read.parquet(getDirs("folder_name", 8, 15): _*)
我正在尝试这个文件夹\u name/*{08,15}*.csv它有什么问题..我还需要使用通配符而不是任何代码加载它
def getDirs(root: String, start: Int, end: Int): Seq[String] = {
(start to end).map(v => f"$root/hyper$v%02d.csv")
}
// usage
spark.read.parquet(getDirs("folder_name", 8, 15): _*)