Как я могу загрузить каталог с S3 параллельно

avatar
Eric Zhang
8 апреля 2018 в 09:52
588
1
1

Я пытаюсь загрузить один каталог с S3 с помощью метода transferManager.downloadDirectory(). В этом каталоге у меня около 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;
    }

С наилучшими пожеланиями,

Эрик Чжан

Источник
Sharanya
26 сентября 2020 в 06:04
0

Удалось ли вам разобраться в этом вопросе?

Ответы (1)

avatar
Buffalo
13 марта 2019 в 10:42
0

Я предполагаю, что запущен только один поток. Вам нужно будет перечислить все ключи, а затем загрузить их, используя Download, а не DownloadDirectory.