0

HDFS から S3 への最終結果ファイルを取得しようとしています。DistCp を使用したいのですが、それはフォルダー全体をコピーするだけのようで、フォルダー内の一部のファイルのみをコピーしたいのです。

したがって、必要なファイルを独自のフォルダーに移動し、そのフォルダーを DistCp でアップロードする必要があると考えています。そのために使用する必要があることを理解してFileSystem.rename(path1,path2)います。

だから私はJavaからの1つのファイルのこの小さなテストを試みています:

Path itemsTable = new Path("hdfs://localhost/process-changes/itemstable-*");
itemsTable.getFileSystem(getConf()).mkdirs(new Path("hdfs://localhost/output"));
//Simple test moving just 1 file around HDFS via java API
boolean success = itemsTable.getFileSystem(getConf()).rename(new Path("hdfs://localhost/process-changes/itemtable-r-00001"), new Path("hdfs://localhost/output/itemtable-r-00001"));

しかし、rename(...) メソッドから常に false が返されます。

これはこれを行う正しい方法ですか?もしそうなら、私が間違っていることについて何か推測はありますか?

4

2 に答える 2

0

hadoop distcp は十分に効果的ではないように思われるので、次のスクリプトを実行してこれを行います。

hadoop fs -copyToLocal /parquet/ /home/hadoop/ aws s3 cp /home/hadoop/parquet/ s3://shinezone-datacenter-data/result/ --recursive --quiet

于 2016-11-02T08:44:47.243 に答える
0

まあ、結局これはうまくいきました。エラーが発生した理由はよくわかりませんが、深刻な小さなミスのせいだと思います。上記のコードは一般的に機能するはずです(私と同じ問題でこれを読んでいる場合)。信念を持って、小さな問題に取り組みましょう。

于 2012-11-27T07:42:56.933 に答える