【问题标题】:How to use 'compose' on GCS using the Java client如何使用 Java 客户端在 GCS 上使用“撰写”
【发布时间】:2014-06-12 14:40:26
【问题描述】:

我想将多个 GCS 文件合并为一个大文件。根据文档,有一个 compose 函数,看起来它完全符合我的需要: https://developers.google.com/storage/docs/json_api/v1/objects/compose

但是,我找不到如何使用 Java 客户端从 GAE 调用该函数: https://developers.google.com/appengine/docs/java/googlecloudstorageclient/

有没有办法用那个库做到这一点?

或者我应该使用频道一个一个地阅读文件?

或者我应该调用低级 JSON 方法吗?

最好的方法是什么?

【问题讨论】:

    标签: java google-app-engine google-cloud-storage


    【解决方案1】:

    新 Java 客户端中提供了 Compose 选项,我已尝试使用 google-cloud-storage:1.63.0。

      /** Example of composing two blobs. */
      // [TARGET compose(ComposeRequest)]
      // [VARIABLE "my_unique_bucket"]
      // [VARIABLE "my_blob_name"]
      // [VARIABLE "source_blob_1"]
      // [VARIABLE "source_blob_2"]
      public Blob composeBlobs(
          String bucketName, String blobName, String sourceBlob1, String sourceBlob2) {
        // [START composeBlobs]
        BlobId blobId = BlobId.of(bucketName, blobName);
        BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("text/plain").build();
        ComposeRequest request =
            ComposeRequest.newBuilder()
                .setTarget(blobInfo)
                .addSource(sourceBlob1)
                .addSource(sourceBlob2)
                .build();
        Blob blob = storage.compose(request);
        // [END composeBlobs]
        return blob;
      }
    

    【讨论】:

      【解决方案2】:

      撰写操作确实完全按照您的意愿进行。但是,撰写操作目前不适用于 GAE Google Cloud Storage 客户端。你有几个选择。

      您可以使用非 GAE Google API 客户端(链接到 Java 客户端)。它调用较低级别的 JSON API 并支持 compose()。缺点是这个客户端没有任何特殊的 AppEngine 魔法,所以有些小东西会有所不同。例如,如果你在本地开发服务器上运行它,它会联系真正的谷歌云存储。此外,您还需要对其进行配置以授权其请求等。

      另一种选择是直接调用 JSON 或 XML API。

      最后,如果您只需要这样做一次,您可以简单地使用命令行实用程序:

      gsutil compose gs://bucket/source1 gs://bucket/source2 gs://bucket/output
      

      【讨论】:

      • 最后,最简单的方法是逐个读取文件并将它们写入一个文件,这对于我们的用例来说已经足够了。
      猜你喜欢
      • 1970-01-01
      • 2021-05-03
      • 2023-03-07
      • 2015-04-26
      • 2012-11-26
      • 2011-07-28
      • 2015-03-19
      • 2019-05-11
      • 1970-01-01
      相关资源
      最近更新 更多