【发布时间】:2018-02-21 12:56:37
【问题描述】:
我对 Big Query 中的 WRITE_TRUNCATE 行为有疑问。
我有一个大查询表 (T1),我会定期将日志数据附加到该表中(每个日志行一行)。我想要一个数据流作业 (D1) 从该表中读取,删除所有重复行并执行其他数据清理操作,然后将其输出到另一个大查询表 (T2 >),替换此表中可能已存在的任何数据。我相信我可以通过在数据流作业的 BigQuery.IO 接收器中使用 WRITE_TRUNCATE write disposition 来做到这一点。
问题是,如果我有另一个数据流作业 (D2) 从表 T2 读取而作业 D1 正在写入截断到这个表,D2 看到什么数据,即它看到的表是在截断之前还是在截断完成之后的状态。或者它可以在截断期间的任何步骤中看到表格(例如,通过附加新数据的一部分)?
上面链接的 javadoc 表明截断 可能不是 是原子的,而 REST documentation for Big Query 表明它是原子的。
【问题讨论】:
标签: google-bigquery google-cloud-dataflow