【问题标题】:S3 Bulk putObjectS3 批量 putObject
【发布时间】:2013-04-26 09:14:44
【问题描述】:

我正在分析我的 Java 分布式爬虫(将爬取的文档存储在 S3 中),而 S3 插入绝对是一个瓶颈。事实上,在线程数足够多的情况下,由于 S3 读取数据的时间过长,线程将始终从 S3 获得超时异常。亚马逊或其他库提供的批量 putObject 函数是否可以更有效地执行此操作?

示例代码:

BUCKET = ...; // S3 bucket definition
AmazonS3 client= ...;

InputStream is = ...; // convert the data into input stream
ObjectMetadata meta = ...; // get metadata
String key = ...;

client.putObject(new PutObjectRequest(BUCKET, key, is, meta));

【问题讨论】:

    标签: java amazon-s3 amazon-ec2


    【解决方案1】:

    我没有将 S3 与 java 一起使用,但 AWS 确实支持大文件的分段上传。

    http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html

    Python 的 boto 库确实支持这一点。我之前用它成功上传了非常非常大的数据库备份。

    在查看了 java 库的 javadocs 之后,我认为您可能需要使用 http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/UploadPartRequest.html 而不是常规请求,并且您可以进行分段上传。

    【讨论】:

    • 我希望在一个请求中放置多个对象。目前我不断收到套接字超时,因为我有 100 多个线程试图一次放置对象。你知道这是否可能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2019-07-19
    • 2011-10-12
    • 2021-12-31
    • 1970-01-01
    • 2012-09-11
    • 2016-10-08
    相关资源
    最近更新 更多