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

数据分析的开发者经常会遇到这样的需求,绘制一条曲线,每个点的含义是当天 0 点到当前时间点的累计指

已解决

数据分析的开发者经常会遇到这样的需求,绘制一条曲线,每个点的含义是当天 0 点到当前时间点的累计指 标,横坐标表示时间,纵坐标是表示累计的指标。对这样的需求可以有哪些解决方案?

展开
收起
游客lmkkns5ck6auu 2022-08-31 10:37:31 422 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    数据分析的开发者经常会遇到这样的需求,绘制一条曲线,每个点的含义是当天 0 点到当前时间点的累计指 标,横坐标表示时间,纵坐标是表示累计的指标。对这样的需求可以有两个解决方案:

    • 第一个方案是使用无限流聚合,把时间归一到分钟粒度以后作为 group key 的一列,但是业务上要求输 出到屏幕上的曲线不再变化,而无限流聚合的输出结果是一个更新流,所以不符合要求;

    • 第二个方案是使用一天的滚动窗口函数。为了提前输出结果,还是要设置提前触发,时间点选用当前机器的时间或者是历史输入数据里最大的时间戳。这个方案的缺点,首先是每个点的纵坐标的值并不是这个时间点上的累计值。这会导致几个异常现象,比如作业失败重启或者是业务主动回溯历史的时候,不 能完全还原当时的历史曲线。而且各个点上分维度的累计值加起来也不等于总维度的值。还有一个缺点,统计 UV 的时候,我们经常会使用两阶段的聚合来避免 distinct key 的倾斜,但是使用这个方案的时候, 原本自身的曲线上可能会出现凹坑。

    以上内容摘自《Apache Flink 案例集(2022版)》电子书,点击https://developer.aliyun.com/ebook/download/7718 可下载完整版

    2022-08-31 12:19:19
    赞同 展开评论 打赏

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

相关电子书

更多
Python第四讲——使用IPython/Jupyter Notebook与日志服务玩转超大规模数据分析与可视化 立即下载
互联网下半场的角逐,玩转轻资产的大数据服务—图(关系网络)数据分析与阿里应用 立即下载
如何使用大数据计算服务 MaxCompute进行数据分析 立即下载