开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink 计算用户的最近2天的交易金额,用滑动窗口,这种业务场景你们是怎么处理的?

flink 计算用户的最近2天的交易金额,用滑动窗口,窗口大小48小时,每分钟滑动一次,这个窗口太大,数据量大,内存会溢出,这种业务场景你们是怎么处理的?

展开
收起
cuicuicuic 2023-10-22 22:10:44 56 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    对于这种业务场景,可以使用Flink的后台管理器(ResourceManager)进行处理。在Flink中,后台管理器会根据作业的资源需求和集群的资源情况,动态地调整作业的并行度和内存使用量。这样可以确保作业能够在满足资源需求的同时,尽可能地使用集群的资源。
    此外,还可以通过调整作业的窗口大小和滑动频率,来减少窗口中数据的数量,从而减少内存的使用。例如,可以将窗口大小设置为每小时一次,或者每2小时一次,这样可以减少窗口中数据的数量,从而减少内存的使用。
    总的来说,可以使用Flink的后台管理器进行处理,通过调整作业的窗口大小和滑动频率,来减少窗口中数据的数量,从而减少内存的使用。

    2023-10-23 13:43:42
    赞同 展开评论 打赏
  • 针对这种业务场景,可以考虑以下几种优化方案:

    1. 数据分区:将数据按照用户ID进行分区,每个分区内的数据只计算该用户的最近2天交易金额。这样可以减少全局的计算量和内存占用。

    2. 使用增量计算:在滑动窗口的基础上,可以使用增量计算的方式,只计算窗口内新增的交易记录。这样可以减少重复计算的部分,提高计算效率。

    3. 使用异步处理:将计算任务拆分成多个子任务,每个子任务负责一部分数据的计算。可以使用Flink的异步IO和线程池机制来实现异步处理,从而提高计算效率和吞吐量。

    4. 使用外部存储:将计算结果存储到外部存储系统中,如Hadoop HDFS、Amazon S3等。这样可以避免内存溢出的问题,同时也可以方便地对数据进行备份和迁移。

    2023-10-23 11:00:19
    赞同 展开评论 打赏
  • 开窗 就要给够内存啊。加机器,扩内存。要没就减小窗口,或者把窗口里的信息单体里没必要的信息去掉,减少单体内存占用。
    窗口运算,本来就是牺牲内存换效率的,空间换时间
    业务允许的话可以先做一分钟的滚动窗口
    ,此回答整理自钉群“【③群】Apache Flink China社区”

    2023-10-23 08:07:07
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载