# canteen-realtime **Repository Path**: oceanrivers/canteen-realtime ## Basic Information - **Project Name**: canteen-realtime - **Description**: 一个关于大学食堂的实时数仓项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-09 - **Last Updated**: 2025-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: flink ## README # 一个史诗级的巨著 ## version1.0 时间:2025年4月9日23:20:03 内容:初步完成了ODS层的代码,今天测试的时候遇到了一个小bug,就是MySQL相关数据库创建之后记得给他添加到binlog里,不然就会出现第一次可以读到数据,但是后续变更数据无法读取的现象 ## version2.0 时间:2025年4月13日16:46:39 内容:初步完成了DIM层的代码,测试的时候遇到两个问题,一个是配置表没有设置主键然后用FlinkCDC读的时候报错了;二是我找的JDBC工具类有点问题导致读取的数据没有办法转成对象,只能自己用反射修改了一下 ## version3.0 时间:2025年4月14日22:01:48 内容:完成了DWD层的交易域下单事务事实表,其中在完成维度退化的时候,有两种实现思路,一是直接使用flatmap每来一条事实数据就从HBase里读取对应的维度数据,二是将HBase里对应的维度数据读出来封装为流再与事实数据进行connect完成合并操作;方法一的好处是不用将维度数据存在内存里,减少内存占用,但是每次IO需要时间,性能较低,可以考虑使用异步IO进行优化;方法二的好处是维度数据通过状态存储在内存里,读取速度快,但是内存占用高 ## version3.1 时间:2025年4月15日22:15:40 内容:完成了DWD层的互动域评论事务事实表,这里是通过connect算子来完成Join操作的,建议先合并订单和订单明细数据,再合并评论数据。 ## version4.0 时间:2025年4月19日23:12:15 内容:完成了DWS层的第一张表,这里在写出数据到Doris的时候遇到了很多坑,下面逐一列举一下 动态分区的坑: Doris在2.1版本开始支持自动分区,在此之前的版本只支持手动分区和动态分区,对于动态分区,假如我在今天导入数据,则他会自动帮我创建今天的分区,注意这里的分区是以数据导入的时间创建的,如果你的分区字段值不是今天,则数据会导入失败(因为只创建了今天的分区),这也就意味着想要使用动态分区必须要求分区字段的值和数据导入时间是一致的,如果分区字段的值和分区导入的时间不一致则只能手动创建分区或者升级Doris到2.1版本使用自动分区。 另外分区字段仅支持date和datetime类型,切记检查类型是否正确 精准一次写入的坑: 如果我们在Doris写入前实现了至少一次,则可以通过Doris的两阶段提交实现精准一次写入,但是经过本人反复测试,发现Doris的两阶段提交很不好使,特别是当你写入数据之后的状态为“Label [label_0_1] has already been used, relate to txn [19650]”(类似),然后发现数据没有成功写入时,建议关闭两阶段提交,这样数据才能写入(这也是官方推荐的解决方法),后续我再研究一下为什么开启两阶段提交会出现这个错误 ## version4.1 时间:2025年4月20日20:32:34 内容:初步完成了DWS层的三张表,后续再考虑添加Redis作为缓存 ## version5.0 时间:2025年4月28日23:07:46 内容:本来一开始可视化是打算用SugerBI的,但是又不想花钱,所以还是决定手搓ECharts,今天初步实现了一个需求,效果感觉还行,使用setInterval函数就可以实现定时刷新 ## version5.1 时间:2025年4月29日23:12:03 内容:把剩余的几个ADS的需求都实现了,接下来剩测试和可视化优化了hhhh ## version6.0 时间:2025年5月23日20:50:18 内容:这里主要是把可视化实现了一下,其实可视化之前就写了,但是当时界面不够美观,把界面进行了优化,看起来更好看了 ## version6.1 时间:2025年6月15日15:08:58 内容:详见另一篇关于FlinkSQL Join的状态设置问题