我似乎无法找到有关此内容的任何文档。我有一个apache-beam管道,它接收一些信息,将它格式化为TableRows,然后写入BigQuery。
[+]问题:
在Dataflow作业完成之前,行不会写入BigQuery。如果我有一个需要很长时间的数据流作业,我希望能够看到插入到BigQuery中的行,是否有人能指出正确的方向?
提前致谢
答案 0 :(得分:1)
由于您正在以批处理模式工作,因此需要将数据同时写入同一表中。如果您使用分区,则属于该分区的所有数据都必须同时写入。这就是为什么插入要最后完成的原因。
请注意,批量处理时 WriteDisposition 非常重要,因为您可以追加数据或截断数据。但是这种区别对流传输管道有意义吗?
在Java中,您可以使用以下函数指定插入方法:
.withMethod(BigQueryIO.Write.Method.STREAMING_INSERTS))
我尚未对其进行测试,但是我认为它应该可以正常工作。另请注意,向BigQuery插入流插入并非免费。
答案 1 :(得分:0)
根据初始转换+加载操作的复杂程度,您可以使用大查询驱动程序从您自己的工作池中将流插入到表中,而不是通过显式的数据流作业加载它。
或者,你可以做更小的批次: