Apache Beam是否支持batch数据与streaming数据的关联操作?
Apache Beam 批流关联及Dataflow支持说明
首先可以明确:Apache Beam 原生支持批量数据与流式数据的关联操作,你给出的示例代码整体逻辑是可行的,仅需要补充少量必要的处理步骤即可跑通。
示例代码调整要点
你当前的代码需要补充如下处理才能正常执行:
CoGroupByKey要求参与关联的两个PCollection都必须是KV结构,所以你需要在batch_processing_func和streaming_processing_func处理完数据后,新增一步映射操作,输出格式为(关联键, 业务数据)的二元组,才能基于指定的键完成关联- 如果你的批数据是体量较小的维度表、更新频率较低,更推荐你使用
beam.pvalue.AsSideInput把批数据作为流处理的侧输入使用,性能会优于CoGroupByKey的实现方式
Google Dataflow 相关说明
你对Dataflow的认知是历史遗留的误区,当前Dataflow完全支持批流混合处理的作业:
- 只要你在启动作业时加上
--streaming参数,将作业设置为流模式,就可以同时接入Kafka等流数据源和文本文件、数据库等批数据源,实现批流关联逻辑 - 如果你需要定期更新关联用的批数据,还可以搭配文件路径监听、定时读取数据库等逻辑,实现动态维度表和实时流数据的关联
内容的提问来源于stack exchange,提问作者user3595632
相关产品推荐
相关产品推荐

