我正在使用Dataflow(apache光束)将数据从PubSub流式传输到BigQuery。当我使用BigQuery流式插入时,没有审计日志可以用来触发额外的转换和插入数据集市表中的最终目的地。可以使用什么方法来连续转换和插入原始数据-
解决方案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
作业都将具有明确的责任,并应用预期的业务转换和接收器。
解决方案2:
您还可以使用Cloud Run
或Cloud Function
对带有Eventark的BigQuery
事件执行操作
如果您真的想在插入第一个表后同步数据,此解决方案很有趣。
示例:
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
其次,您有两个转换数据的选项:
根据转换的复杂性,您可以依靠视图来提供原始数据的精选视图,并立即访问新数据。
这种情况的通常方法是利用这两种机制,以便:
因此,您可以将合并数据与新数据联合起来以构建视图并执行计划查询以转换和存储合并数据集中的原始数据。
这种方法将消费者与底层混合模型隔离开来。