如何从hdfs到s3获取文件

8mmmxcuj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(474)

我正在尝试从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。
这样做对吗?如果是的话,你猜我做错了什么?

xnifntxz

xnifntxz1#

好吧,最终还是成功了。我不太清楚为什么我会犯错,我相信这是一个严重的小错误。一般来说,上面的代码应该可以工作(如果你和我读这篇文章时遇到了同样的问题)。要有信心,把小问题解决好。

bbuxkriu

bbuxkriu2#

hadoop distcp似乎不够有效,因此我运行以下脚本来执行此操作:
hadoop fs-copytolocal/parquet//home/hadoop/aws s3 cp/home/hadoop/parquet/s3://shinezone datacenter data/result/--递归--安静

相关问题