首页 > 其他分享 >flink车联网项目前篇:数据开发(第66天)

flink车联网项目前篇:数据开发(第66天)

时间:2024-08-16 09:56:10浏览次数:14  
标签:info dim 前篇 flink 信息 开发 66 维度 数据

系列文章目录

03_数据仓库开发

  1. 开发规范
    1.1 数据库划分规范
    1.2 表命名规范
    1.3 表字段类型规范
  2. 开发前准备
    3.1 业务系统表
    3.2 数据导入
    04_维度主题
  3. 相关表结构
    1.1 dim_area - 城市字典表
    1.2 dim_car_info - 车辆信息表
    1.3 dim_car_vendor - 车队信息表
    1.4 dim_date_work_type -节假日期类型表
    1.5 dim_driver_info - 司机信息
    1.6 dim_user_info -乘客维度信息表
  4. 设计思路

文章目录


前言

本文为flink车联网项目前期准备:数据仓库开发。由于篇幅过长,后续章节:业务实现

03_数据仓库开发

1. 开发规范

1.1 数据库划分规范

MySQL:dim/order/driver
VVP:
mysql:用于存放 flink 的 mysql 映射表信息
dw:用于存放 flink 的 Kafka 映射表信息
redis:用于存放 flink 的 redis 表映射信息
starrocks:用于存放 flink 的 starrocks表映射信息
Paimon:
ods:用于存放 ods 表信息及数据
dwd:用于存放 dwd 表信息及数据
dws:用于存放 dws 表信息及数据
ads:用于存放 ads 表信息及数据
dim:用于存放 dim 相关的表信息及数据
StarRocks:ads、dws

1.2 表命名规范

命名规则:介质_分层_表含义
 介质:
mysql:mysql 映射表
paimon:paimon 表
kafka:kafka 映射表
mc:maxcompute 表
sr:starrocks 映射表
redis: redis映射表
 分层:
ods
dwd
dws
ads
 表含义:
示例:order_info_all 订单信息总表

1.3 表字段类型规范

  1. 数量类型为bigint
  2. 金额类型为decimal,例decimal(20, 2),表示:20位有效数字,其中小数部分2位
  3. 字符串(名字,描述信息等)类型为string
  4. 日期类型为string
    时间类型为datetime
  1. 开发步骤
    因为维表和源表是共用的,所以先开发维表,然后开发源表;
    然后开发订单域的订单主题(实时),动态调价主题(实时),推荐上车点主题(离线);
    然后开发司机主题(离线)、乘客主题(离线)、投诉申诉主题(离线);
    最后开发日志流处理。

3. 开发前准备

3.1 业务系统表

在这里插入图片描述

我们一共有有23张表,其中dim库6张,order库10张,driver库7张。

3.2 数据导入

打开mysql 客户端,运行4、load.sql脚本。
source /export/data/mysql/4、load.sql
注意,每次运行这个脚本都会将历史数据更新到前31天的数据。如果需要将数据进行更新,则运行这个脚本即可。

04_维度主题

维度主题属于公共域,其实就是开发项目中用到的维度表。

1. 相关表结构

在这里插入图片描述

1.1 dim_area - 城市字典表

在这里插入图片描述

1.2 dim_car_info - 车辆信息表

在这里插入图片描述

在这里插入图片描述

1.3 dim_car_vendor - 车队信息表

在这里插入图片描述

1.4 dim_date_work_type -节假日期类型表

在这里插入图片描述

1.5 dim_driver_info - 司机信息

在这里插入图片描述
在这里插入图片描述

1.6 dim_user_info -乘客维度信息表

在这里插入图片描述

2. 设计思路

因为维度表在实时任务和离线任务中都会用到,所以最好使用同一份数据,一方面避免重复开发,降低开发成本,另一方面可以做到数据的一致性。
考虑到维度表的变化相对事实表来说比较缓慢,所以没有必要追求毫秒级更新,做到亚秒级更新即可。所以这里可以采用的技术方案就可以省掉Kafka,直接通过Flink CDC读取mysql数据,然后写入到Paimon表中,因为Paimon表支持增删改查,所以就对应最新的数据。如果维表加工时需要关联,流式读取Paimon表进行双流Join即可,这样就可以做到数据的亚秒级更新。
另外,因为维度是变化的,为了保存这种变化信息,需要将数据进行快照保存,也就是每天将当日的维度信息导入到分区表中,这样在查询历史数据时就可以跟对应日期的数据进行关联,取到正确的数据。当然,如果数据不会变化,则不用同步到MaxCompute,如时间维度表。
因为分区表的使用场景主要是离线关联,为了方便数据的存和取,这里直接使用MaxCompute作为存储介质。
在这里插入图片描述

具体表的数据流转图如下:
在这里插入图片描述

以dim_area为例展示如下:
在这里插入图片描述

项目中主要使用阿里云flink自带的catalog来管理flink的元数据,即vvp。对于paimon表,为了方便表的创建和管理,使用单独的paimon catalog,并为了和MaxCompute整合,将元数据保存到MaxCompute中一份。
MySQL注册表通过Flink SQL进行关联、转换等操作后插入到Paimon表中;Paimon表整合了MaxCompute,所以在MaxCompute中也可以进行查询;最后为了对维度数据进行快照备份,创建了 MaxCompute 分区表,表名后缀 table_i 。
注意:
表名后缀中 _f 表示全量表,_i 表示增量分区表。

标签:info,dim,前篇,flink,信息,开发,66,维度,数据
From: https://blog.csdn.net/syhiiu/article/details/141250476

相关文章

  • 洛谷题单指南-常见优化技巧-P2866 [USACO06NOV] Bad Hair Day S
    原题链接:https://www.luogu.com.cn/problem/P2866题意解读:每个牛能看到的右边比他矮的牛,直到有比他高的挡住为止,因此只用找每个牛右边第一个比他高的牛的位置即可计算中间比他矮的有多少。解题思路:典型的单调栈应用,注意,常规的单调栈可以用来:1、找每个数左边第一个比他小的数的......
  • 考研数学 | 《基础过关 660》怎么合理运用?
    考研数学的复习过程中,《基础过关660》是一本备受推崇的习题集。它以其高质量的题目和对基础概念的深入考查而闻名,合理运用它对于提升数学能力至关重要。一、适用人群基础阶段的考生:对于刚开始复习考研数学,想要打好坚实基础的同学来说,《基础过关660》是非常合适的。它可以帮......
  • 易优Flink友情链接-Eyoucms标签手册
    【基础用法】名称:flink功能:用于获取友情链接列表。语法:{eyou:flinktype='text'row='30'titlelen='15'}<ahref='{$field.url}'>{$field.title}</a>{/eyou:flink}参数:type=''链接类型,text为文字链接,image为图片链接,all为全部链接row=&......
  • Codeforces Round 966 (Div. 3) VP
    A.PrimaryTask枚举所有情况即可voidsolve(){ strings; cin>>s; if(s.substr(0,2)!="10"||s.size()<3||s[2]=='0'||(s.size()<4&&s[2]<'2')){ cout<<"NO\n"; } else{......
  • ESP8266 AP模式配置WIFI
    #include<Arduino.h>#include<ESP8266WiFi.h>#include<WiFiManager.h>//导入WIFI管理模块voidsetup(){Serial.begin(115200);//配置示波器默认频率WiFiManagermanager;//实例化WIFI管理对象manager.autoConnect("esp8266","12345678&q......
  • [开题报告]FLASK框架网上拍卖系统8y66t(源码+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为全球经济增长的重要驱动力。其中,网上拍卖作为一种独特的交易模式,凭借其透明度高、互动性强、价格......
  • 学费管理系统的设计与实现(10766)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • Codeforces Round 966 (Div. 3)
    A-PrimaryTask给一个数\(x\),判断其是否形如\(\overline{ab}\)满足\(a=10,b\ge2\)且无前导零。模拟判断即可。code#include<bits/stdc++.h>usingnamespacestd;constintmaxn=3e5+3;intT;stringn;voidsolve(){ cin>>n; if((n=="1"||n=="10......
  • 代表性大数据技术:Hadoop、Spark与Flink的框架演进
    MapReduce编程模型的提出为大数据分析和处理开创了一条先河,之后陆续涌现出了Hadoop、Spark和Flink等大数据框架。Hadoop2004年,Hadoop的创始人受MapReduce编程模型等一系列论文的启发,对论文中提及的思想进行了编程实现。Hadoop的名字来源于创始人DougCutting儿子的玩具大......
  • 每日一题:Leetcode-662 二叉树最大宽度
    力扣题目解题思路java代码力扣题目:给你一棵二叉树的根节点 root ,返回树的 最大宽度 。树的 最大宽度 是所有层中最大的 宽度 。每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,两端点间会出现一些......