实时数仓

    1. 分层:
    2. ODSKafka topic_db topic_log
    3. 采集模块:
    4. 第一层Flume:日志数据
    5. Maxwell:业务数据
    6. DIM:HBase(Phoenix)
    7. 使用场景:事实表会根据主键获取一行维表数据(1.永久存储、2.根据主键查询)
    8. HBase:海量数据永久存储,根据主键快速查询
    9. Redis:用户表数据量大,内存数据库 ×
    10. ClickHouse:并发不行,列存 ×
    11. ES:默认给所有字段创建索引 ×
    12. Hive(HDFS):效率低下 ×
    13. Mysql本身:压力太大,实在要用就使用从库

    动态配置:决定需要哪些维表

    1. FlinkCDC读取MySQL配置表并转换为广播流
    2. 处理主流与广播流关联以后的数据流
    3. 处理广播流
    4. 获取并解析数据、建表、写入状态
    5. 处理主流
    6. 读取状态、过滤字段、加入SinkTable字段写出
    7. 自定义Sink将数据写出到Phoenix
    8. DWDKafka
    9. 日志数据:DataStream
    10. 未经加工的 5 状态编程新老用户检验、侧输出流分流
    11. 日活 状态编程,按天去重数据,TTL
    12. 跳出 CEP
    13. 业务数据:FlinkSQL
    14. 事实表 订单 支付 加购 点赞 评论 收藏 领券 注册
    15. JOIN
    16. WindowJoinIntervalJoin
    17. joinleft joinright joinfull join
    18. LookUp join:维度退化
    19. upsert-kafka sink
    20. DWSClickHouse
    21. 关键词需求:FlinkSQL、提取事件时间开窗、自定义UDTF函数、IK分词器的使用
    22. 用户商品粒度下单:关联维表操作
    23. JDBCUtil -> DimUtil -> 测试发现延迟过高
    24. 优化1:旁路缓存
    25. 缓存的选择:堆缓存、独立缓存服务
    26. 读缓存、写缓存、数据更新时删除缓存
    27. 数据更新时:将更新的数据写入Phoenix、删除Redis中的数据
    28. 先将更新的数据写入Phoenix、再删除Redis中的数据
    29. 先删除Redis中的数据、再将更新的数据写入Phoenix
    30. 先删除Redis中的数据、再将更新的数据写入Phoenix、再删除Redis中的数据
    31. 数据更新时:先将数据写入Redis、再将数据写入Phoenix
    32. 优化2:异步IO
    33. 10s聚合
    34. ADS:数据接口