【问题标题】:How to append files in GCS with the same schema?如何在 GCS 中附加具有相同架构的文件?
【发布时间】:2019-04-28 11:18:31
【问题描述】:

有什么办法可以在 GCS 中附加两个文件,假设文件一个是完整的 加载和第二个文件是增量加载。那么我们可以追加什么方式 两个?
其次,使用 gsutil compose 将附加两个文件,包括属性 名字也一样。所以,在最终的文件中我想要两个文件的数据。

【问题讨论】:

  • 请一次提出一个问题。
  • 对不起,我是stackoverflow的新手..一定会牢记向前!

标签: node.js google-cloud-storage


【解决方案1】:

您可以在 Google Cloud Shell 中附加两个单独的文件 using compose,并将输出文件重命名为第一个文件,如下所示:

gsutil compose gs://bucket/obj1 [gs://bucket/obj2 ...] gs://bucket/obj1

此命令适用于并行上传,其中您将大型对象文件划分为较小的对象。它们会上传到 Google Cloud Storage,然后您可以附加它们以获取原始文件。您可以在Composite Objects and Parallel Uploads.找到更多信息

我提出了两种可能的解决方案:

谷歌云函数解决方案

我会选择使用云函数。执行以下操作:

  1. 创建一个空存储桶,例如 append_bucket。
  2. 上传第一个文件。
  3. 创建一个云函数为triggered by new uploaded files 桶。
  4. 上传第二个文件。
  5. 阅读第一个和第二个文件(您必须先download them as string)。
  6. 进行追加操作。
  7. 将结果上传到存储桶。

谷歌数据流解决方案

您也可以使用 Dataflow for BigQuery 进行操作(请记住,它仍处于测试阶段)。

  1. 创建 BigQuery 数据集和表。
  2. 创建一个 Dataflow 实例,从模板 Cloud Storage Text 到 BigQuery。
  3. 使用转换文本的逻辑创建一个 Javascript 文件。
  4. 将 Json 格式的文件上传到存储桶。
  5. Dataflow 将读取 Json 文件,执行 Javascript 代码并将新数据附加到 BigQuery 数据集。
  6. 最后,将 BigQuery 查询结果导出到 Cloud Storage。

【讨论】:

  • 感谢您的回复。但第一种方法仅适用于文件大小低于 10 MB 的情况,因为云功能在数据处理方面存在限制。但如果只是将文件从一个存储桶移动到另一个存储桶,则没有大小限制。
  • @flametech 是的,Cloud Functions 确实有一些限制,这就是我提供其他选项的原因,以便您了解 GCP 上可用的可能解决方案。不过,我的回答对你有帮助吗?
  • 有一个名为 Attunity compose 的工具,可用于合并文件并在一个最终目标文件中提供结果,该目标文件可用作使用 BQ 获取数据的外部源。为了提供解决方案,上述答案是正确的,但有一定的局限性 1)在数据处理方面 2)定价问题。因此,牢记这两个限制条件,Attunity Compose 运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
  • 2021-03-09
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
相关资源
最近更新 更多