我希望使用Dataflow使用BQ load jobs将数据加载到BigQuery表中 - 不流式传输(流式传输对于我们的用例来说会花费太多) . 我看到Dataflow SDK内置支持通过BQ流插入数据,但我无法在Dataflow SDK中找到任何支持开箱即用的加载作业的内容 .
一些问题:
1)Dataflow SDK是否对BigQuery加载作业插入有OOTB支持?如果没有,是否有计划?
2)如果我需要自己动手,有什么好办法?
如果我必须自己动手,使用Google Cloud 端存储执行BQ加载作业是一个多步骤的过程 - 将文件写入GCS,通过BQ API提交加载作业,并(可选)检查状态,直到作业完成(或失败) . 我希望我可以使用现有的TextIO.write()功能写入GCS,但我不确定如何通过后续调用BQ API来提交加载作业(以及可选的后续调用以检查作业状态,直到完成为止 .
此外,我将在流模式下使用Dataflow,窗口为60秒 - 所以我也想每60秒执行一次加载工作 .
建议?
1 回答
BigQueryIO.write()
在输入PCollection
有界时始终使用BigQuery加载作业 . 如果您希望它也使用它们,如果它是无界的,请指定.withMethod(FILE_LOADS).withTriggeringFrequency(...)
.