2023年12月2日
上一课时我们学习了 Flink 消费 Kafka 数据计算 PV 和 UV 的水印和窗口设计,并且定义了窗口计算的触发器,完成了计算 PV 和 UV 前的所有准备工作。 接下来就需要计算 PV 和 UV 了。在当前业务场景下,根据 userId 进行统计,PV 需要对 userId 进行统计,而 UV 则需要对 userId 进行去重统计。 下面我们使用不同的方法来统计 PV 和 UV。 单窗口内存统……
阅读全文
2023年12月2日
我们在第 31 课时中讲过,在计算 PV 和 UV 等指标前,用 Flink 将原始数据进行了清洗,清洗完毕的数据被发送到另外的 Kafka Topic 中,接下来我们只需要消费指定 Topic 的数据,然后就可以进行指标计算了。 Flink 消费 Kafka 数据反序列化 上一课时定义了用户的行为信息的 Java 对象,我们现在需要消费新的 Kafka Topic 信息,并且把序列化的消息转化为用……
阅读全文
2023年12月2日
第 29 课时讲过,在计算 PV 和 UV 的过程中关键的一个步骤就是进行日志数据的清洗。实际上在其他业务,比如订单数据的统计中,我们也需要过滤掉一些“脏数据”。 所谓“脏数据”是指与我们定义的标准数据结构不一致,或者不需要的数据。因为在数据清洗 ETL 的过程中经常需要进行数据的反序列化解析和 Java 类的映射,……
阅读全文
2023年12月2日
Flume 概述 Flume 是 Hadoop 生态圈子中的一个重要组件,在上一课时中提过,它是一个分布式的、高可靠的、高可用的日志采集工具。 Flume 具有基于流式数据的简单灵活的架构,同时兼具高可靠性、高可用机制和故障转移机制。当我们使用 Flume 收集数据的速度超过下游的写入速度时,Flume 会自动做调整,使得数据的采集和推送能……
阅读全文
2023年12月2日
从这一课时开始我们进入“Flink 实时统计 PV、UV”项目的学习。本课时先介绍实时统计项目的背景、架构设计和技术选型。 背景 PV(Page View,网站的浏览量)即页面的浏览次数,一般用来衡量网站用户访问的网页数量。我们可以简单地认为,一个用户每次打开一个页面便会记录一次 PV,也就……
阅读全文
2023年12月2日
本课时主要讲解 Flink 中的 TopN 功能的设计和实现。 TopN 在我们的业务场景中是十分常见的需求,比如电商场景中求热门商品的销售额、微博每天的热门话题 TopN、贴吧中每天发帖最多的贴吧排名等。TopN 可以进行分组排序,也可以按照需要全局排序,比如若要计算用户下单总金额的 Top 10 时,就需要进行全局排序,然……
阅读全文
2023年12月2日
我们在第 12 课时“Flink 常用的 Source 和 Connector”中提过 Flink 提供了比较丰富的用来连接第三方的连接器,可以在官网中找到 Flink 支持的各种各样的连接器。 此外,Flink 还会基于 Apache Bahir 发布一些 Connector,其中就有我们非常熟悉的 Redis。很多人在 Flink 项目中访问 Redis 的方法都是自己进行实现……
阅读全文
2023年12月2日
我们在第 08 课时中提到了 Flink 所支持的窗口和时间类型,并且在第 25 课时中详细讲解了如何设置时间戳提取器和水印发射器。 实际的业务中,我们在使用窗口的过程中一定是基于窗口进行的聚合计算。例如,计算窗口内的 UV、PV 等,那么 Flink 支持哪些基于窗口的聚合函数?累加器又该如何实现呢? Flink 支持的窗口函数 我……
阅读全文
2023年12月2日
第 08 课时我们提过窗口和时间的概念,Flink 框架支持事件时间、摄入时间和处理时间三种。Watermark(水印)的出现是用于处理数据从 Source 产生,再到转换和输出,在这个过程中由于网络和反压的原因导致了消息乱序问题。 那么在实际的开发过程中,如何正确地使用 Watermark 呢? 使用 Watermark 必知必会 Watermark 和事件时间……
阅读全文
2023年12月2日
在上一课时中我们提过在实时计算的场景下,绝大多数的数据源都是消息系统,而 Kafka 从众多的消息中间件中脱颖而出,主要是因为高吞吐、低延迟的特点;同时也讲了 Flink 作为生产者像 Kafka 写入数据的方式和代码实现。这一课时我们将从以下几个方面介绍 Flink 消费 Kafka 中的数据方式和源码实现。 Flink 如何消费 Kafka Flink 在和 Kafka 对接的过……
阅读全文