2013-01-24 86 views
2

我跑了一堆的日期範圍的M/R報告和現在的路徑有特殊字符的文件有一系列類似的目錄:故障檢索在

/用戶/邁克爾/輸出/ TrueListingSellThroughFromLeafCategory/{20120101,20120102 ,20120103,20120104,20120105,20120106,20120107} /user/michael/output/TrueListingSellThroughFromLeafCategory/{20120108,20120109,20120110,20120111,20120112,20120113,20120114} /user/michael/output/TrueListingSellThroughFromLeafCategory/{20120115,20120116 ,20120117,20120118,20120119,20120120,20120121}

我在瀏覽這些目錄時遇到了很多困難。如果我嘗試使用其中的一種,t會將日期作爲列表併爲每個目錄查找不同的目錄。如果我逃避大括號,我得到一個沒有這樣的文件或目錄錯誤。如果我用%7B和%7D替換大括號,它是相似的。

如果我通配符這一水平那麼我就可以瀏覽下:

/用戶/邁克爾/輸出/ TrueListingSellThroughFromLeafCategory/*

但它會很高興找回它們一次一個!我怎樣才能做到這一點?

回答

4

看起來你應該能夠使用正則表達式運算符?

hadoop fs -ls /user/michael/output/TrueListingSellThroughFromLeafCategory/?20120101,20120102,20120103,20120104,20120105,20120106,20120107? 

我對我的盒子測試解決它,它似乎工作:

[[email protected] ~]$ hadoop fs -mkdir /tmp/{TEST} 
[[email protected] ~]$ hadoop fs -put <(echo foo) /tmp/{TEST}/ 
[[email protected] ~]$ hadoop fs -ls /tmp/{TEST} 
ls: Cannot access /tmp/{TEST}: No such file or directory. 
[[email protected] ~]$ hadoop fs -ls '/tmp/\{TEST\}' 
ls: Illegal file pattern: Expecting set closure character or end of range, or } for glob {TEST at 5 
[[email protected] ~]$ hadoop fs -ls /tmp/?TEST? 
Found 1 items 
-rw-r--r-- 3 cmenguy supergroup  4 2013-01-24 05:59 /tmp/{TEST}/63 

看起來這是仍然有效正在進行中,如HDFS-3557中所述,它似乎特定於0.20.2(如果您使用的是Cloudera,則仍會影響cdh3u *版本,因此您可能需要使用cdh4)

+0

Tha噸工作!謝謝 – Ilion