ApacheBeam在无界侧输入上被阻塞
创始人
2024-09-05 12:01:02
0

当使用无界侧输入处理数据流时,Beam 可能会在等待无限数据源(如 Pub/Sub)时被阻塞,因为此类数据源可能不会发出终止信号。为解决此问题,可以使用全局窗口和 trigger 来等待足够的数据后输出结果。以下是一个示例:

from apache_beam import ParDo, DoFn, window
from apache_beam.io.gcp.pubsub import ReadFromPubSub
from apache_beam.options.pipeline_options import PipelineOptions
from apache_beam.transforms.trigger import AfterWatermark, AccumulationMode, AfterProcessingTime

class MyDoFn(DoFn):
    def __init__(self):
        self.side_input = []

    def process(self, element, side_input):
        # 使用 side_input 处理数据行为
        ...
        
    def process_side_input(self, element):
        # 处理无界侧输入
        ...

options = PipelineOptions()
with beam.Pipeline(options=options) as p:
    # 从 Pub/Sub 主题中读取消息
    pubsub_messages = p | ReadFromPubSub(subscription='projects/project-id/subscriptions/subscription-id')

    # 使用全局窗口并添加触发器等待足够的数据后输出结果
    results = (pubsub_messages
               | "Assign to Global Window" >> beam.WindowInto(window.GlobalWindows())
               | "Parse Data and Process" >> beam.ParDo(MyDoFn(),
                                                        side_input=beam.pvalue.AsList(self.side_input))
               .with_output_types(str))
    # 设置触发器
    trigger = AfterWatermark(
        early=AfterProcessingTime(processing_time=120),
        late=AfterProcessingTime(processing_time=240),
        accumulation_mode=AccumulationMode.DISCARDING)
    results = (results | beam.WindowInto(window.GlobalWindows(),
                                         trigger=trigger,
                                         accumulation_mode=AccumulationMode.DISCARDING))
    # 将处理结果写入 Pub/Sub 主题
    results | beam.io.WriteToPubSub('projects/project-id/topics/topic-id')

在上面的示

相关内容

热门资讯

玩家爆料!微乐小程序辅助器免费... 玩家爆料!微乐小程序辅助器免费,陕西三代实战技巧,详细app(证实有挂)微乐小程序辅助器免费辅助器是...
终于懂了!微乐家乡破解版,威信... 终于懂了!微乐家乡破解版,威信茶馆跑辅助器,详细脚本(有挂规律)1、点击下载安装,威信茶馆跑辅助器脚...
推荐攻略!广西友乐免费辅助,联... 推荐攻略!广西友乐免费辅助,联盟辅助软件,详细工具(真的有挂)广西友乐免费辅助脚本下载中分为三种模型...
分享给玩家!奇迹陕西游戏辅助器... 分享给玩家!奇迹陕西游戏辅助器,卡五星辅助器,详细挂(证实有挂)1、奇迹陕西游戏辅助器破解器简单,奇...
一秒答解!闲逸辅助软件下载苹果... 一秒答解!闲逸辅助软件下载苹果,四川血战到底辅助,详细神器(有挂总结)1、首先打开闲逸辅助软件下载苹...
免费测试版!拱趴大菠萝技巧,闲... 免费测试版!拱趴大菠萝技巧,闲来辅助器下载,详细工具(有挂秘籍)1、首先打开闲来辅助器下载辅助器下载...
玩家必备科普!微信牵手跑有没有... 玩家必备科普!微信牵手跑有没有挂,钱塘十三水辅助器,详细工具(有挂技术)1、首先打开微信牵手跑有没有...
六分钟了解!微友圈app辅助工... 六分钟了解!微友圈app辅助工具,微信小程序开心泉州辅助器,详细神器(有挂教程)六分钟了解!微友圈a...
一分钟带你了解!情怀国粹麻将神... 一分钟带你了解!情怀国粹麻将神器,皮皮胡子辅助,详细教程(揭秘有挂)1)情怀国粹麻将神器有没有挂:进...
推荐攻略!川娱竞技辅助插件,牵... 推荐攻略!川娱竞技辅助插件,牵手app破解,详细神器(有挂教学)1、完成川娱竞技辅助插件辅助器v3....