我想从S3读取和写入InMemory缓冲区,如:阅读S3对象和写入InMemory缓冲区
def inMemoryDownload(bucketName: String, key: String): String = {
val s3Object = s3client.getObject(new GetObjectRequest(bucketName, key))
val s3Stream = s3Object.getObjectContent()
val outputStream = new ByteArrayOutputStream()
val buffer = new Array[Byte](10* 1024)
var bytesRead:Int =s3Stream.read(buffer)
while (bytesRead > -1) {
info("writing.......")
outputStream.write(buffer)
info("reading.......")
bytesRead = ss3Stream.read(buffer)
}
val data = new String(outputStream.toByteArray)
outputStream.close()
s3Object.getObjectContent.close()
data
}
但它给我的堆空间误差(文件上S3大小为4MB)
您可能需要检查堆内存。另外,不建议在堆内存中使用4mb数据。 – notionquest
我的JVM堆大小是1G。 – developer