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