【发布时间】:2018-04-17 21:18:47
【问题描述】:
我有一个管道,我可以在其中下载数千个文件,然后转换它们并将它们作为 CSV 存储在谷歌云存储上,然后在 bigquery 上运行加载作业。
这很好用,但是当我运行数千个加载作业(每个下载的文件一个)时,我达到了导入配额。
我已经更改了我的代码,因此它列出了存储桶中的所有文件并运行一项作业,并将所有文件作为作业的参数。
所以基本上我只需要运行一次最后一步,即所有数据都已处理完毕。我想我可以使用 groupBy 转换来确保所有数据都已处理,但我想知道是否有更好/更标准的方法。
【问题讨论】:
-
为什么要写回 GCS,而不是直接写到 BigQuery?
-
出于成本原因
-
你能详细说明一下吗?
-
使用流 api 或插入语句插入不是免费的。但是通过 gcs 加载数据是。我们每天要插入数亿行,所以价格差距很大。
-
Dataflow 仅在流模式下运行时使用流插入。这听起来像是在做一个批处理管道,它实际上只是在后台运行(免费)BQ 加载作业。
标签: java google-cloud-dataflow apache-beam