rename(new Path("/src/*.txt"), new Path("/dest/");/srcの拡張子txtのファイルを/destにリネームしそうな雰囲気はあるが、何も起こらない。 戻り値booleanもTrueなので、失敗したわけではなく、単に該当無しという感じだ。 てっとり早く動かすにはワイルドカードを使わないことだ。 /src配下の該当ファイル一覧をとってきて、各ファイルについてリネームすれば動く。 ファイル一覧は、listStatusのフィルターを拡張して正規表現や後方一致で絞り込めばいい。 hdfs -mvならワイルドカードを使えるんだが。 そう簡単にはいかないらしい。
2013年02月16日
FileSystemのrename
HadoopでHDFS上のファイルを移動したい場合、
Fileクラスのrenameを使う方法がある。
インタフェースはこうなっている。
public boolean rename(Path src, Path dst);
ここで指定するパスにワイルドカードは使えないようだ。