我有一个具有以下属性的BigQuery表:
Table size: 1.64 TB
Number of rows: 9,883,491,153
使用流插入将数据放在那里(每批500行)。
从谷歌云定价计算器来看,到目前为止,这些插入的成本大约应该是86 $。
但在现实中,它被证明是大约482 $。
解释在定价文档中
流插入(
tabledata.insertAll
):每200 MB $0.010 (对成功插入的行收取费用)。使用1KB的最小大小计算单个行。)
因此,在我的表中,每行只有182个字节,但是我需要为每一行支付1024字节,这导致了估计成本的562 %。
是否有一种规范的(当然也是合法的)方法来改善这种情况,即降低成本?(类似于插入只有一个结构数组列的临时表,在一行中容纳多行,然后拆分-定期移动到实际目标表中?)
发布于 2022-01-04 23:30:35
我可以建议你以下几种选择:
使用BigQuery存储写API。您可以将记录流到BigQuery中,它们可以作为在DB中写入的记录可用,也可以对进程进行批处理,以插入大量的记录,以便在单个操作中提交。
一些优点是:
以下是有关BigQuery存储写入的更多信息。
另一个选项是,您可以使用Beam/DataFlow创建一个流到BigQuery的批处理,并使用BigQueryIO和batch的写入方法。您可以看到更多的信息,这里。
https://stackoverflow.com/questions/70567211
复制相似问题