2015-01-13 33 views
5

我想從包含許多子目錄的目錄中讀取文件。數據是在S3,我試圖做到這一點:從s3或本地文件系統的火花從子目錄遞歸讀取文件

val rdd =sc.newAPIHadoopFile(data_loc, 
    classOf[org.apache.hadoop.mapreduce.lib.input.TextInputFormat], 
    classOf[org.apache.hadoop.mapreduce.lib.input.TextInputFormat], 
    classOf[org.apache.hadoop.io.NullWritable]) 

這似乎並不奏效。雖然

欣賞的幫助

+0

您是否試過只是使用'textFile(「s3n:// /*」)'? –

+0

是的,我試過了,不起作用 – venuktan

+0

請發佈一個如何嵌套目錄的例子。可能有一個涉及簡單通配符的解決方案,如:'s3n:// bucket/*/*/*'。 –

回答

9

是它的工作原理,過了好一會兒,以獲得各個塊/分裂,基本上在每一個子目錄一個特定的目錄: s3n://bucket/root_dir/*/data/*/*/*

+0

這個答案不清楚:「每個子目錄中的特定目錄」是什麼意思?你的例子沒有顯示出來。謝謝! – javadba

+0

s3n:// bucket/root_dir/*/data/*/*/*在上面的url中,我正在嘗試讀取目錄數據。父目錄的數據是可變的,所以我用「*」。希望有所幫助。 – venuktan

+0

聽起來像一個不同於我的用例 - 它是「給定一個目錄/某些/ hdfs /目錄」:找到它下面的所有文件。結構/ some/hdfs/dir/*/*/*/*。「不起作用:hdfs -dfs在它找到的任何目錄條目上都會返回一個錯誤 – javadba

-1

沒關係,試試這個:

hadoop fs -lsr 
drwxr-xr-x - venuktangirala supergroup   0 2014-02-11 16:30 /user/venuktangirala/-p 
drwxr-xr-x - venuktangirala supergroup   0 2014-04-15 17:00 /user/venuktangirala/.Trash 
drwx------ - venuktangirala supergroup   0 2015-02-11 16:16 /user/venuktangirala/.staging 
-rw-rw-rw- 1 venuktangirala supergroup  19823 2013-10-24 14:34 /user/venuktangirala/data 
drwxr-xr-x - venuktangirala supergroup   0 2014-02-12 22:50 /user/venuktangirala/pandora 

-lsr遞歸列表,然後解析那些不以「d」開頭的列表

相關問題