scala循环遍历路径

时间:2017-06-26 06:06:29

标签: scala apache-spark

我是sparkscala的新手。我有以下要求。我需要处理具有子目录的路径下的所有文件。我想,我需要编写一个for循环逻辑来处理所有文件。

以下是我的案例:

src/proj_fldr/dataset1/20170624/file1.txt
src/proj_fldr/dataset1/20170624/file2.txt
src/proj_fldr/dataset1/20170624/file3.txt
src/proj_fldr/dataset1/20170625/file1.txt
src/proj_fldr/dataset1/20170625/file2.txt
src/proj_fldr/dataset1/20170625/file3.txt
src/proj_fldr/dataset1/20170626/file1.txt
src/proj_fldr/dataset1/20170626/file2.txt
src/proj_fldr/dataset1/20170626/file3.txt
src/proj_fldr/dataset2/20170624/file1.txt
src/proj_fldr/dataset2/20170624/file2.txt
src/proj_fldr/dataset2/20170624/file3.txt
src/proj_fldr/dataset2/20170625/file1.txt
src/proj_fldr/dataset2/20170625/file2.txt
src/proj_fldr/dataset2/20170625/file3.txt
src/proj_fldr/dataset2/20170626/file1.txt
src/proj_fldr/dataset2/20170626/file2.txt
src/proj_fldr/dataset2/20170626/file3.txt

我需要代码来迭代这些文件 在src

   loop (proj_fldr
             loop(dataset
                      loop(datefolder
                                 loop(file1 then, file2....))))

1 个答案:

答案 0 :(得分:0)

由于您有常规文件结构,因此在读取文件时可以使用通配符*。您可以执行以下操作将所有文件读入单个RDD

val spark = SparkSession.builder.getOrCreate()
val rdd = spark.sparkContext.wholeTextFiles("src/*/*/*/*.txt")

结果将是RDD[(String, String)],其中包含每个已处理文件的元组中的路径和内容。

要明确设置是否要使用本地或HDFS文件,您可以附加" hdfs://"或" file://"到路径的开头。