GCP数据流将数据流到BigQuery RAW表,触发转换/插入到数据集市表



我使用Dataflow(apache beam)将数据从PubSub流到BigQuery。由于我使用的是BigQuery流插入,因此没有审计日志可以用来触发额外的转换和插入到数据集市表中的最终目的地。用什么方法可以对原始数据进行连续变换和插入?Mart,当数据流进入原始表时?如果有其他选择,我不想使用Bigquery Scheduled Queries进行转换/插入。

解决方案1:

你可以应用全流管道的设计:

TOPIC RAW -> Dataflow job Sink RAW data to Bigquery (RAW table)
-> Dataflow job applying transformations and sink data to the Datamart

在本例中,有2个订阅者,即2个Dataflow作业

每个Dataflow作业都有明确的职责,并应用预期的业务转换和接收。

方案二:

你也可以用Eventarc在BigQuery事件上使用Cloud RunCloud Function动作

如果你真的想在第一个表上插入数据后同步你的数据,这个解决方案是有趣的。

的例子:

gcloud eventarc triggers create ${SERVICE}-trigger 
--location ${REGION} --service-account ${SVC_ACCOUNT} 
--destination-run-service ${SERVICE}  
--event-filters type=google.cloud.audit.log.v1.written 
--event-filters methodName=google.cloud.bigquery.v2.JobService.InsertJob 
--event-filters serviceName=bigquery.googleapis.com

首先,如果你正在考虑转换bigquery中的数据,我认为你可以删除数据流组件,因为你可以直接从pub/sub插入到bigquery中。

https://cloud.google.com/pubsub/docs/bigquery

其次,您有两个选项来转换数据: <<ul>
  • 计划查询/gh>
  • 根据转换的复杂性,您可以依赖视图来提供原始数据的管理视图,并立即访问新数据。

    此场景的通常方法是利用这两种机制,以便:

    • 视图允许使用新数据,但会带来性能损失(转换是动态执行的)
    • 调度查询定期合并数据,执行转换并存储最终数据。

    因此,您可以将合并数据与新数据合并以构建视图,并执行计划查询以转换并存储合并数据集中的原始数据。

    这种方法将消费者与底层混合模型隔离开来。

  • 最新更新