3

日付範囲で一連の m/r レポートを実行したところ、次のような一連のディレクトリが作成されました。

/user/michael/output/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}

これらのディレクトリをブラウズするのは非常に困難です。これらのいずれかを実行しようとするとls、日付がリストとして取得され、それぞれに対して異なるディレクトリが検索されます。中かっこをエスケープすると、no such file or directory エラーが発生します。中括弧を %7B と %7D に置き換えても同様です。

そのレベルをワイルドカード化すると、下を参照できます。

/user/michael/output/TrueListingSellThroughFromLeafCategory/*

しかし、それらを一度に 1 つずつ取得するとよいでしょう。これどうやってするの?

4

1 に答える 1

7

正規表現演算子で修正できるはずです?

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

私は自分のボックスでテストしましたが、うまくいくようです:

[cmenguy@localhost ~]$ hadoop fs -mkdir /tmp/{TEST}
[cmenguy@localhost ~]$ hadoop fs -put <(echo foo) /tmp/{TEST}/
[cmenguy@localhost ~]$ hadoop fs -ls /tmp/{TEST}
ls: Cannot access /tmp/{TEST}: No such file or directory.
[cmenguy@localhost ~]$ hadoop fs -ls '/tmp/\{TEST\}'
ls: Illegal file pattern: Expecting set closure character or end of range, or } for glob {TEST at 5
[cmenguy@localhost ~]$ 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 を使用する必要があります)。

于 2013-01-24T06:08:06.810 に答える