主要任务

从Kafka 读取退单明细数据,过滤null 数据并按照唯一键对数据去重,关联维度信息,按照维度分组,统计各维度各窗口的订单数和订单金额,将数据写入ClickHouse 交易域品牌-品类-用户粒度退单各窗口汇总表。

思路分析

1)从 Kafka 退单明细主题读取数据

2**)转换数据结构**

  1. JSONObject 转换为实体类TradeTrademarkCategoryUserRefundBean

3**)补充与分组相关的维度信息**

  1. 关联sku_info
  2. 获取tm_idcategory3_id

4**)设置水位线**

5**)分组、开窗、聚合**

按照维度信息分组,度量字段求和,并在窗口闭合后补充窗口起始时间和结束时间。将时间戳置为当前系统时间。

6**)补充与分组无关的维度信息**

(1)关联base_trademark 表

  1. 获取tm_name
  2. 2)关联base_category3
  3. 获取name(三级品类名称),获取 category2_id
  4. 3)关联base_categroy2
  5. 获取name(二级品类名称),category1_id

(4)关联base_category1 表

  1. 获取name(一级品类名称)。

7**)写出到ClickHouse。**

图解

实时数仓(三十四)DWS层-交易域品牌-品类-用户粒度退单各窗口汇总表 - 图1

ClickHouse 建表语句

启动ClickHouse

systemctl start clickhouse

systemctl start clickhouse-server

clickhouse-client -m

  1. drop table if exists dws_trade_trademark_category_user_refund_window;
  2. create table if not exists dws_trade_trademark_category_user_refund_window
  3. (
  4. stt DateTime,
  5. edt DateTime,
  6. trademark_id String,
  7. trademark_name String,
  8. category1_id String,
  9. category1_name String,
  10. category2_id String,
  11. category2_name String,
  12. category3_id String,
  13. category3_name String,
  14. user_id String,
  15. refund_count UInt64,
  16. ts UInt64
  17. ) engine = ReplacingMergeTree(ts)
  18. partition by toYYYYMMDD(stt)
  19. order by (stt, edt, trademark_id, trademark_name, category1_id,
  20. category1_name, category2_id, category2_name, category3_id, category3_name, user_id);

代码

(1)实体类 TradeTrademarkCategoryUserRefundBean

https://gitee.com/luan_hao/gmall-flink/blob/master/gmall-realtime/src/main/java/com/apache/gmall/bean/TradeTrademarkCategoryUserRefundBean.java

(2)主程序

https://gitee.com/luan_hao/gmall-flink/blob/master/gmall-realtime/src/main/java/com/apache/gmall/app/dws/DwsTradeTrademarkCategoryUserRefundWindow.java

测试

开启hadoop,zookeeper,hbase,phoenix,kafka,maxwell,redis,clickhouse

启动redis 命令 :redis-cli -h hadoop102 —raw

依次启动如下两个类

DwdTradeOrderRefund,DwsTradeTrademarkCategoryUserRefundWindow(Phoenix(HBase-HDFS、ZK)、Redis) -> ClickHouse(ZK)

修改配置文件(当日)

实时数仓(三十四)DWS层-交易域品牌-品类-用户粒度退单各窗口汇总表 - 图2

启动脚本 (首次启动后,十秒钟之后再启动一次)

实时数仓(三十四)DWS层-交易域品牌-品类-用户粒度退单各窗口汇总表 - 图3

查看数据

实时数仓(三十四)DWS层-交易域品牌-品类-用户粒度退单各窗口汇总表 - 图4

有如上图数据,则程序成功!