如何从S3并行下载目录

时间:2018-04-08 09:52:32

标签: java amazon-s3

我尝试使用transferManager.downloadDirectory()从S3下载一个目录。在这个目录中,我有大约9000个小文件。

我设置了50个固定线程池,但我没有感觉到性能发生了变化。我想它只适用于MultiPart文件下载。

是否有一种简单的方法可以并行下载目录?

    TransferManagerBuilder transferManagerBuilder = TransferManagerBuilder.standard();
    transferManagerBuilder.setS3Client(s3client);
    transferManagerBuilder.setExecutorFactory(() -> Executors.newFixedThreadPool(50));
    TransferManager transferManager = transferManagerBuilder.build();

    File tempDir = tempDirPath.toFile();
    MultipleFileDownload download =  transferManager.downloadDirectory("REGRESSION_TEST", fromPath, tempDir);
    try {
        download.waitForCompletion();
    } catch (AmazonClientException | InterruptedException e) {
        logger.debug("failed to download S3 files", e);
        return null;
    }

最诚挚的问候,

张爱玲

1 个答案:

答案 0 :(得分:0)

我的猜测是只有一个线程在运行。 您需要列出所有密钥,然后使用 Download (而不是DownloadDirectory)下载它们。