从HDFS到S3的Java传输

从HDFS到S3的Java传输,java,amazon-s3,hdfs,Java,Amazon S3,Hdfs,我想用Java将一个文件从HDFS传输到S3。有些文件可能很大,所以在上传到S3之前,我不想在本地下载文件。在Java中有什么方法可以做到这一点吗 下面是我现在拥有的(一段将本地文件上传到S3的代码)。我不能真正使用这个,因为使用File对象意味着我将它放在硬盘上 File f = new File("/home/myuser/test"); TransferManager transferManager = new TransferManager(credentials); Multipl

我想用Java将一个文件从HDFS传输到S3。有些文件可能很大,所以在上传到S3之前,我不想在本地下载文件。在Java中有什么方法可以做到这一点吗

下面是我现在拥有的(一段将本地文件上传到S3的代码)。我不能真正使用这个,因为使用File对象意味着我将它放在硬盘上

File f = new File("/home/myuser/test");

TransferManager transferManager  = new TransferManager(credentials);
MultipleFileUpload upload = transferManager.uploadDirectory("mybucket","test_folder",f,true);

谢谢

我找到了上传部分

AWSCredentials credentials = new BasicAWSCredentials(
            "whatever",
            "whatever");

    File f = new File("/home/myuser/test");

    TransferManager transferManager  = new TransferManager(credentials);

    //+upload from HDFS to S3
    Configuration conf = new Configuration();
    // set the hadoop config files
    conf.addResource(new Path("/etc/hadoop/conf/core-site.xml"));
    conf.addResource(new Path("/etc/hadoop/conf/hdfs-site.xml"));

    Path path = new Path("hdfs://my_ip_address/user/ubuntu/test/test.txt");
    FileSystem fs = path.getFileSystem(conf);
    FSDataInputStream inputStream = fs.open(path);
    ObjectMetadata objectMetadata =  new ObjectMetadata();
    Upload upload = transferManager.upload("xpatterns-deployment-ubuntu", "test_cu_jmen3", inputStream, objectMetadata);
    //-upload from HDFS to S3

    try {
        upload.waitForCompletion();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

关于如何下载类似的东西有什么想法吗?我在TransferManager中没有找到任何可以使用上述代码中的流的download()方法。

哪个版本的Hadoop?2.x(至少)支持S3作为文件系统,因此您可以从HDFS打开一个流并将其写入S3。首先要看一下hadoop fs copy的代码。我不能使用这个工具(或者至少我不知道如何使用)。我需要一个桶和钥匙。有没有办法用类似的方法上传文件夹?