数据流:我可以使用批处理作业连续写/流写入BigQuery吗?

问题描述 投票:1回答:2

我似乎无法找到任何关于此的文档。我有一个apache-beam管道,它接收一些信息,将其格式化为TableRows,然后写入BigQuery。

[+]问题:

在Dataflow作业完成之前,行不会写入BigQuery。如果我有一个需要很长时间的Dataflow作业,我希望能够看到插入到BigQuery中的行,那么有人能指出正确的方向吗?

提前致谢

google-bigquery google-cloud-dataflow apache-beam
2个回答
1
投票

由于您在批处理模式下工作,因此需要在同一个表中同时写入数据。如果您正在使用分区,则需要同时写入属于分区的所有数据。这就是最后插入的原因。

请注意,当您批量处理时,WriteDisposition非常重要,因为您要么追加数据,要么截断。但这种区别对流媒体管道有意义吗?

在java中,您可以使用以下函数指定插入方法:

.withMethod(BigQueryIO.Write.Method.STREAMING_INSERTS))

我没有测试它,但我相信它应该按预期工作。另请注意,BigQuery的流式插入不是免费的。


0
投票

根据初始转换+加载操作的复杂程度,您可以使用大查询驱动程序从您自己的工作池中将流插入到表中,而不是通过显式的数据流作业加载它。

或者,您可以做更小的批次:

  • N个独立作业,每个加载TIME_PERIOD / N个数据量
© www.soinside.com 2019 - 2024. All rights reserved.