数据流到BigQuery配额

Jef*_*ang 3 google-bigquery google-cloud-dataflow

对于这个特殊问题,我发现了一些相关的问题,但Google团队没有明确的答案:

写入BigQuery的Cloud DataFlow作业是否限于每桌每秒100K行的BigQuery配额(即BQ流限制)?

谷歌数据流写入bigquery表性能

Cloud DataFlow性能 - 是我们的预期时间吗?


编辑: 主要动机是找到一种方法来预测各种输入大小的运行时.

我已经设法运行通过Dataflow监控UI处理显示> 180K行/秒的作业.但是我不确定这是否会以某种方式限制插入到表中,因为作业运行时间比原始计算慢了大约2倍(500毫米行/ 180k行/秒= 45分钟,实际上花费了近2小时)

Dan*_*rin 6

从您的消息中,听起来您正在批处理而不是流式处理模式执行管道.

在批处理模式下,在Google Cloud Dataflow服务上运行的作业不使用BigQuery的流式写入.相反,我们将要导入的所有行写入GCS上的文件,然后调用BigQuery加载"作业.请注意,这会降低您的成本(加载作业比流写入更便宜)并且整体效率更高(BigQuery可以更快地执行)批量加载比执行每行导入..权衡是,在整个作业成功完成之前,BigQuery中没有可用的结果.

加载作业不受一定行数/秒的限制,而是受每日配额的限制.

在Streaming模式下,Dataflow确实使用BigQuery的流式写入.在这种情况下,每秒100,000行的限制确实适用.如果超过该限制,Dataflow将收到quota_exceeded错误,然后重试失败的插入.这种行为有助于消除暂时超过BigQuery配额的短期峰值; 如果您的管道长时间超过配额,此失败重试策略最终将作为一种背压的形式,从而减慢您的管道.

-

至于为什么你的工作花了2个小时而不是45分钟,你的工作将有多个阶段连续进行,因此使用最快阶段的吞吐量并不是估算端到端运行时的准确方法.例如,在Dataflow完成将所有行写入GCS之后才会启动BigQuery加载作业.您的费率似乎合理,但如果您怀疑性能下降,请跟进.