2017-06-26 4 views
0

sparkおよびscalaを初めて使用しています。私は以下の要件があります。私は、サブディレクトリを持つパスの下のすべてのファイルを処理する必要があります。私は、すべてのファイルを処理するためのfor-loopロジックを記述する必要があると思います。パス内の複数のファイルにまたがるスケーラループ

以下

は、私の場合の例です。

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....)))) 
+0

これらのファイルはHDFSまたはローカルにありますか? – philantrovert

+2

https://stackoverflow.com/questions/24029873/how-to-read-multiple-text-files-into-a-single-rdd –

答えて

0

で などのファイルを反復処理するコードが必要あなたは、通常のファイル構造を持っているので、ワイルドカードを使用することができます*ファイルを読むとき。あなたは、単一のRDDにすべてのファイルを読むために次の操作を行うことができます。

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

結果がパスと、各処理されたファイルのためのタプルの内容とRDD[(String, String)]になります。

ローカルまたはHDFSファイルを使用するかどうかを明示的に設定するには、パスの先頭に "hdfs://"または "file://"を追加します。

関連する問題