摘要:
一、背景说明 所谓CDC:全称是 Change Data Capture ,在广义的概念上,只要能捕获数据变更的技术,我们都可以称为 CDC 。通常我们说的 CDC 技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术。 目前实时链路对于数据的处理是大多数使用的方案是通过工具,对业务数据日 阅读全文
摘要:
一、背景说明 需求为从Kafka消费对应主题数据,通过TableApi对数据进行WordCount后,基于DDL写法将数据写入ES。 二、代码部分 说明:代码中关于Kafka及ES的连接部分可以抽象到单独的工具类使用,这里只是一个演示的小demo,后续操作均可自行扩展,如Kakfa一般处理为json 阅读全文
摘要:
一、背景说明 Flink的API做了4层的封装,上两层TableAPI、SQL语法相对简单便于编写,面对小需求可以快速上手解决,本文参考官网及部分线上教程编写source端、sink端代码,分别读取socket、kafka及文本作为source,并将流数据输出写入Kafka、ES及MySQL,方便后 阅读全文
摘要:
一、背景说明 在Flink中可以使用Window join或者Interval Join实现双流join,不过使用join只能实现内连接,如果要实现左右连接或者外连接,则可以通过connect算子来实现。现有订单数据及支付数据如下方说明,基于数据时间实现订单及支付数据的关联,超时或者缺失则由侧输出流 阅读全文
摘要:
一、背景说明: 在上篇文章实现了TopN计算,但是碰到迟到数据则会无法在当前窗口计算,需要对其中的键控状态优化 Flink使用二次聚合实现TopN计算 本次需求是对数据进行统计,要求每隔5秒,输出最近10分钟内访问量最多的前N个URL,数据流预览如下(每次一条从端口传入): 208.115.111. 阅读全文
摘要:
一、背景说明: 有需求需要对数据进行统计,要求每隔5分钟输出最近1小时内点击量最多的前N个商品,数据格式预览如下: 543462,1715,1464116,pv,1511658000 662867,2244074,1575622,pv,1511658000 561558,3611281,965809 阅读全文
摘要:
一、背景说明 在Flink中对流数据进行去重计算是常有操作,如流量域对独立访客之类的统计,去重思路一般有三个: 基于Hashset来实现去重 数据存在内存,容量小,服务重启会丢失。 使用状态编程ValueState/MapState实现去重 常用方式,可以使用内存/文件系统/RocksDB作为状态后 阅读全文
摘要:
一、背景说明 本文基于IK分词器,自定义一个UDTF(Table Functions),实现类似Hive的explode行转列的效果,以此来简明开发过程。 如下图Flink三层API接口中,Table API的接口位于最顶层也是最易用的一层,可以套用SQL语法进行代码编写,对于有SQL基础的能很快上 阅读全文
摘要:
一、背景说明: 在目前实时数仓中,由于维表具有主键唯一性的特点,Hbase/Redis通常作为维表存放选择 Hbase:数据存于磁盘具有持久性但是查询效率慢。 Redis:数据存于内存查询效率高,但维表多数据量大时候占用资源多。 基于旁路缓存思想,对维表存储的优化的思路为:维表数据存储在Hbase, 阅读全文
摘要:
一、需求说明: 对页面日志数据进行ETL,对跳出用户进行标记后输出到Kafka。 跳出用户定义: 条件1:不是从其他页面跳转过来的页面,是一个首次访问页面。日志数据表现为不存在last_page_id字段。 条件2:距离首次访问结束后10秒内,没有对其他的页面再进行访问。 ps:该需求一般为实时项目 阅读全文