我正在分析我的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));
答案 0 :(得分:1)
我没有将S3与java一起使用,但AWS确实支持大文件的多部分上传。
http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html
Python的boto库确实支持这一点。我之前用它来成功上传非常大的数据库备份。
在查看java库的javadoc之后,我认为您可能需要使用http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/UploadPartRequest.html而不是常规请求,并且可以进行分段上传。