GCP CloudStorageにアップロードする3GBのサイズのデータファイルがあります。 GCPオブジェクトのアップロードチュートリアルの例を試してみました。しかし、アップロードしようとすると、次のエラーが発生しました。
Java.lang.OutOfMemoryError: Required array size too large
私は次のように試しました、
BlobId blobId = BlobId.of(gcpBucketName, "ft/"+file.getName());
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("text/plain").build();
Blob blob = storage.get().create(blobInfo, Files.readAllBytes(Paths.get(file.getAbsolutePath())));
return blob.exists();
どうすればこれを修正できますか? GCP Cloud storage Java clientを使用して大きなファイルをアップロードする方法はありますか?
これは、Files.readAllBytesによって返される配列の 許可されている最大サイズよりも大きい であるために発生しています。
実行できる回避策は、ファイルをバイトの複数の配列に分割し、それらを個別のファイルとしてバケットにアップロードし、 gsutil compose command を使用してそれらを結合することです。