如何从HDFS到S3获取文件

时间:2012-11-23 11:34:56

标签: hadoop amazon-s3 hdfs

我正在尝试从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"));

但是我总是从重命名(...)方法中得到错误。

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

2 个答案:

答案 0 :(得分:0)

嗯,最后这确实奏效了。我不太清楚为什么我会收到错误,我认为这是一个严重的小错误。一般来说,上面的代码应该可以工作(如果你和我一样读这个问题)。有信心,只是处理小问题。

答案 1 :(得分:0)

似乎hadoop distcp不够有效,所以我运行以下脚本来执行此操作:

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