首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用亚马逊s3的分块上传接口时内存不足问题

使用亚马逊s3的分块上传接口时内存不足问题
EN

Stack Overflow用户
提问于 2019-06-24 23:43:11
回答 1查看 763关注 0票数 3

我正在尝试使用aws SDK和spark进行aws分块上传,文件大小约为14 of,但出现内存不足错误。它在这一行给出了错误- val bytes: Array[Byte] = IOUtils.toByteArray(is)

我曾尝试将驱动程序内存和执行器内存提升到100G,并尝试了一些其他的spark优化。

下面是我正在尝试的代码:

代码语言:javascript
复制
val tm = TransferManagerBuilder.standard.withS3Client(s3Client).build
      val fs = FileSystem.get(new Configuration())
      val filePath = new Path(hdfsFilePath)
      val is:InputStream = fs.open(filePath)
      val om = new ObjectMetadata()
      val bytes: Array[Byte] = IOUtils.toByteArray(is)
      om.setContentLength(bytes.length)
      val byteArrayInputStream: ByteArrayInputStream = new ByteArrayInputStream(bytes)
      val request = new PutObjectRequest(bucketName, keyName, byteArrayInputStream, om).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(kmsKey)).withCannedAcl(CannedAccessControlList.BucketOwnerFullControl)
      val upload = tm.upload(request)

这是我得到的一个例外:

代码语言:javascript
复制
java.lang.OutOfMemoryError
                at java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:123)
                at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117)
                at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
                at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
                at com.amazonaws.util.IOUtils.toByteArray(IOUtils.java:45)
EN

回答 1

Stack Overflow用户

发布于 2019-06-25 05:35:32

PutObjectRequest accepts File

代码语言:javascript
复制
public PutObjectRequest(String bucketName, String key, File file)

下面这样的代码应该可以工作(我还没有检查过):

代码语言:javascript
复制
val result = TransferManagerBuilder.standard.withS3Client(s3Client)
  .build
  .upload(
    new PutObjectRequest(
      bucketName,
      keyName,
      new File(new Path(hdfsFilePath))
    )
    .withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(kmsKey))
    .withCannedAcl(CannedAccessControlList.BucketOwnerFullControl)
  )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56739977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档