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(...) 方法得到错误的回报。

这甚至是正确的方法吗?如果是这样,任何猜测我做错了什么?

4

2 回答 2

0

好吧,最后这确实奏效了。我不太清楚为什么我会出错,我相信这是一个严重的小错误。上面的代码通常应该可以工作(如果您正在阅读与我相同的问题)。有信心,只是解决小问题。

于 2012-11-27T07:42:56.933 回答
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 回答