Как уже упоминалось в комментариях, вы можете использовать HDFS FileSystem
API, чтобы получить список путей, существующих на основе вашего регулярного выражения (если это действительное регулярное выражение).
import org.apache.hadoop.fs._
val path = Array("path_prefix/folder1[2-8]/*", "path_prefix/folder2[2-8]/*")
val fs: FileSystem = FileSystem.get(sc.hadoopConfiguration) // sc = SparkContext
val paths = path.flatMap(p => fs.globStatus(new Path(p)).map(_.getPath.toString))
Таким образом, даже если, скажем, /path_prefix/folder13
пусто, его содержимое не будет перечислено в переменной paths
, которая будет Array[String]
, содержащей все доступные файлы в регулярном выражении.
Наконец, вы можете сделать:
spark.read.json(paths : _*)