我们需要根据 BigQuery 中多个表中的数据生成 CSV 文件。
目前,我们正在尝试构建一个 java 服务,它将借助 google-cloud-bigquery 包获取 TableResult 中的数据,并收集 TableResult 对象中的数据并循环遍历它以创建 CSV。 这种方法的速度和可扩展性如何。
或者 GCP 是否提供其他选项来完成此任务。 请提出建议。
最佳答案
最有效的方法是使用内置 BigQuery export到 GCS 机制,因为 BigQuery 利用其并行性使用多个线程写入输出。您最多可以将 1 GB 的表数据导出到单个文件。如果您要导出超过 1 GB 的数据,请使用 wildcard将数据导出到多个文件中:
gs://<BUCKET_NAME>/csvfilename*.csv
然后,当您的所有 .csv
文件都位于存储桶中时,您可以使用 gsutil compose
命令,该命令会创建一个新对象,其内容是给定的串联同一桶下源对象的顺序:
gsutil compose gs://<BUCKET_NAME>/a.csv gs://<BUCKET_NAME>/b.csv gs://<BUCKET_NAME>/composite.csv
其中 composite.csv
是 a.csv
和 b.csv
的串联。请参阅documentation .
希望对您有所帮助。
关于java - 根据 BigQuery 中多个表的数据生成 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60864325/