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