微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以块为单位的云存储构建文件

如何解决以块为单位的云存储构建文件

正在寻找如何在云存储中动态构建文件的示例。以下是我的用例:

  1. Java 应用程序将查询数据的大查询
  2. 在大查询中使用分页,数据会被页面窗口拉取
  3. 从 BQ 获得数据后,将每个块持久化到云存储中。
  4. 上传所有块后,完成文件上传

这里的挑战是云存储文件是不可变的,所以一旦你在 GCS 中创建了对象,除非你覆盖同一个文件,否则你不能再重新打开它。 尝试使用流式传输和 resumable upload 功能进行探索,根据我的理解,它需要在上传之前准备好文件

如果这是不可能的,我现在唯一的选择是将每个块上传为不同的文件,并使用云存储组合功能将这些块合并为一个文件。鉴于您需要创建多个对 GCS 的请求来完成一个文件,这是非常昂贵的。

解决方法

如果您的最终文件格式是 CSV、JSONL(行)、AVRO 或 Parquet,您可以使用表格导出功能。如果您导出的文件小于 1Gb,则只会生成一个文件。

  • Java 应用程序查询 BigQuery 并将结果接收到临时表中
CREATE TABLE `myproject.mydataset.mytemptable`
OPTIONS(
  expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(),INTERVAL 1 HOUR)
) AS
SELECT ....

仅此而已。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。