上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Flink实时电商数仓(九)

guduadmin11天前

用户注册汇总表

需求分析

  • 统计各窗口的注册用户数,写入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()写出
      • 添加水位线
        • assignTimestampsAndWatermark()
        • 使用WatermarkStrategy.<泛型>乱序流
        • DateFormatUtil.dateTimeToTs(element.getCreateTime());提取数据中的时间
        • 分组开窗聚合
          • reduce聚合
            • v1:累加值
            • v2:需要累加进来的值
            • process获取窗口信息

            • 启动doris, 在hadoop102:8030打开web页面
            • 在doris页面建立相应的表格
            • 创建对应的doris sink
              • context.window()获取窗口window
              • window.getStart()和window.getEnd()
              • 写出到doris, stream.sinkTo(doris sink);

    用户加购汇总表

    需求分析

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

    思路分析

    和上面一样

    具体实现

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

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

网友评论

搜索
最新文章
热门文章
热门标签