2013-04-26 119 views
1

我正在分析我的Java分布式抓取程序(它存储在S3中抓取的文档),并且S3插入肯定是一个瓶颈。事实上,在线程数量足够多的情况下,由于S3读取数据所需的时间太长,线程将始终如一地从S3中获取超时异常。是否有Amazon或其他库提供的批量putObject函数可以更高效地执行此操作?S3 Bulk 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)); 

回答

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而不是常规请求,并且您可以获取分段上传。

+0

我希望更多的将多个对象放在一个请求中。目前我不断收到套接字超时,因为我有超过100个线程试图一次把对象。你知道这是可能的吗? – Jin 2013-04-27 17:14:27