Flink实时电商数仓(九)

用户注册汇总表

需求分析

  • 统计各窗口的注册用户数,写入Doris

思路分析

  1. 读取kafka用户注册主题数据
  2. 转换数据结构 string -> JSONObject->javaBean
  3. 使用user_info表中的数据代表用户注册
  4. 设置水位线
  5. 开窗聚合
  6. 写入Doris

具体实现

  1. 创建用户注册统计类继承BaseApp,设置端口,并行度,kafka消费者组,kafka主题(Topic_user_register)

  2. 启动zookeeper, HDFS, kafka, maxwell等框架

  3. 测试能够收到数据stream.print()

  4. 数据清洗过滤,并且转换数据结构为javaBean

    • JSONObject.parseObject(value);转换格式
    • json.getString();获取对应字段
    • 判断对应字段是否为空,不为空则out.collect()写出
  5. 添加水位线

    • assignTimestampsAndWatermark()
    • 使用WatermarkStrategy.<泛型>乱序流
    • DateFormatUtil.dateTimeToTs(element.getCreateTime());提取数据中的时间
  6. 分组开窗聚合

    • reduce聚合
      • v1:累加值
      • v2:需要累加进来的值

    process获取窗口信息

  7. 启动doris, 在hadoop102:8030打开web页面

  8. 在doris页面建立相应的表格

  9. 创建对应的doris sink

    • context.window()获取窗口window
    • window.getStart()window.getEnd()
  10. 写出到doris, stream.sinkTo(doris sink);

用户加购汇总表

需求分析

统计各窗口加购独立用户数,写入Doris

思路分析

和上面一样

具体实现

  1. 数据的清洗过滤,判断user_id和ts不能为空
    • 使用try-catch包裹转换判断代码
    • 修改ts的位数,原先是10位的秒级单位,*1000更改为毫秒级
  2. 添加水位线,获取数据中的ts
    • 水位线可以保证数据是有序到达的
  3. 按照user_id进行分组
  4. 判断是否为独立用户
    • 创建独立用户加购类 CartAddUuBean
    • 在open方法中存储用户上次登录日期lastLoginDtState
      • 设置状态的生存时间:lastLoginDtDesc.enableTimeToLive(StateTtlConfig.newBuilder(Time.days(1)).builder)
    • 在processElement方法中,判断当前数据的时间和状态中的上次登录时间
      • 如果上次登录时间为空或者上次登录时间不等于今天,就是独立用户
      • lastLoginDtState.update(curDt);更新当前的状态
      • 如果是独立访客,才需要out.collect()写出
  5. 开窗聚合
    • v1.set(v1.get + v2.get)对度量值进行聚合
    • TimeWindow window = context.window()获取窗口信息
  6. 测试开窗聚合信息是否完成
  7. 写出到Doris, .map(转换为蛇形字符串) .sinkTo(doris sink);

gitee仓库地址:(https://gitee.com/langpaian/gmall2023-realtime)

相关推荐
物联网软硬件开发-轨物科技15 分钟前
【技术白皮书】光伏电站数智化技改技术白皮书:从老旧场站到高收益智能资产的演进路径
大数据·运维·服务器
2501_946490381 小时前
Hirender MTC时间码技术实操——PH®CLUB激光投影声光电精准同步实现方案
大数据·运维·人工智能·hirender·hecoos
诚思报告YH1 小时前
半导体石英制品市场洞察:2026-2032年复合增长率(CAGR)达9.2%
大数据·人工智能
云器科技1 小时前
从“数据中台“到“数智基建“:一树药业的湖仓架构升级实践
大数据·架构·湖仓平台
yohalaser1 小时前
智测破局提质 武汉曜华激光助力钙钛矿产线规模化量产
大数据·人工智能·太阳能·光伏发电·曜华激光·光伏组件生产线
代码匠心1 小时前
从零开始学Flink:Flink SQL 元数据持久化实战
大数据·flink·flink sql·大数据处理
紧固视界3 小时前
2026 紧固件质检三大难题揭秘|上海紧固件专业展
大数据·人工智能·紧固件·上海紧固件展·紧固件展
LaughingZhu4 小时前
Product Hunt 每日热榜 | 2026-02-24
大数据·数据库·人工智能·经验分享·搜索引擎
Hello.Reader4 小时前
Flink Metrics 实战自定义指标、系统指标、排障观测一把梭
大数据·flink
中山六匹马4 小时前
2026中山B2B网站建设:如何结合GEO优化提升企业竞争力
大数据·网络·人工智能