【问题标题】:How to get files from HDFS to S3如何从 HDFS 获取文件到 S3
【发布时间】:2016-11-02 16:44:47
【问题描述】:

我正在尝试获取一些最终结果文件从 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(...) 方法得到错误的返回。

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

【问题讨论】:

    标签: hadoop amazon-s3 hdfs


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      看来 hadoop distcp 不够有效,所以我运行以下脚本来做到这一点:

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

      【讨论】:

        猜你喜欢
        • 2016-04-12
        • 2014-07-08
        • 2011-11-21
        • 1970-01-01
        • 2014-11-07
        • 2022-01-09
        • 2019-07-08
        • 2013-06-13
        相关资源
        最近更新 更多