# BigDataGuide **Repository Path**: XiYun0/BigDataGuide ## Basic Information - **Project Name**: BigDataGuide - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-25 - **Last Updated**: 2021-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大数据系统 ## 项目说明 ## 架构图 ## 核心技术栈 + 版本选择 :dizzy: | 技术 | 描述 | 版本 | | -------------- | --------------------- | ----- | | Vue | 前端 | 3.0 | | Java | 永远的神 | 8 | | SpringBoot | 脚手架 | 2.4.3 | | Scala | 函数式编程语言 | | | MySQL | 数据库 | 5.7.6 | | Redis | NoSQL数据库 | 6.0.1 | | Nginx | 负载均衡服务器 | | | Flume | 日志数据采集组件 | | | DataX | 业务数据传输 | | | Zookeeper | | 3.5.7 | | Kafka | | | | Redis | 基于内存的数据库 | 6.0.1 | | Hadoop | 数据存储 | 3.1.3 | | Hive | 数仓 | 3.1.2 | | Hbase | | | | Flink | 实时计算 | | | Spark | | 2.4.7 | | Kylin | 即席查询 | 3.1.2 | | SuperSet/DataV | 数据可视化 | | | Docker | | | | Kubernets | | | | Kubeflow | k8s下的机器学习工具包 | | ## 准备工作:sailboat: 软件工具 | | 功能 | | ----------- | ---------------- | | IDEA 2021.1 | 集成开发环境 | | VsCode | 用于前端的编辑器 | | VMWare | | | XShell | ssh工具 | | EZDML | 数据库设计 | | drawio | 绘图 | 开发环境 ## 机器配置:diamond_shape_with_a_dot_inside: ### 物理机/本机 ``` Windows 10 ``` ### 虚拟机 | 系统 | 数量 | | ------- | ---- | | Centos7 | 3 | ### 云服务器 | 系统 | 数量 | | ------- | ---- | | Centos7 | 1 | ## 数据源:earth_asia: 高德开放平台 https://console.amap.com/dev/key/app ``` key:ff83e7d2577a8a4f73bdeb0a9d950531 ``` 南京信息工程大学西苑、地铁站经纬度 ``` 118.726857%2C32.202385 118.705943%2C32.201909 ``` 静态地图,从南信大文园一栋到地铁站 ``` https://restapi.amap.com/v3/staticmap?markers=mid,0xFF0000,A:118.726857%2C32.202385;118.705943%2C32.201909&key=ff83e7d2577a8a4f73bdeb0a9d950531&zoom=14&size=1024*1024&scale=2&traffic=1 ``` 电动车(骑行)路径规划 ``` https://restapi.amap.com/v5/direction/electrobike?key=ff83e7d2577a8a4f73bdeb0a9d950531&origin=118.726857%2C32.202385&destination=118.705943%2C32.201909 ``` ## 开发进度:recycle: ### 数据库设计 [果创云已收录9,000+张数据库表](http://open.yesapi.cn/list.html) 司机信息 ```sql CREATE TABLE `driver_info` ( `id_` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `mobile` varchar(20) DEFAULT NULL COMMENT '手机号', `driver_name` varchar(64) DEFAULT NULL COMMENT '姓名', `create_time` varchar(64) DEFAULT NULL COMMENT '创建时间', `register_city` varchar(6) DEFAULT NULL COMMENT '注册城市(城市编码字典)', `driver_type` int(11) DEFAULT NULL COMMENT '司机所属业务类型, 1:快车 2:出租车 3:专车', `cancel_count` int(11) DEFAULT NULL COMMENT '司机当天有责取消订单的次数', `driver_management_id` int(11) DEFAULT NULL COMMENT '司管方id', PRIMARY KEY (`id_`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=9949 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='司机信息表'; ``` 周边司机 ```sql -- 数据库大全:滴滴周边司机 -- 来源:YesApi.cn CREATE TABLE `yesapi_didi_drivers` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `product_type` varchar(20) NOT NULL COMMENT '产品类型', `ride_type` varchar(20) NOT NULL COMMENT '运力类型', `driver_nums` int(10) NOT NULL DEFAULT '0' COMMENT '周边司机数目', `eta_in_seconds` int(10) NOT NULL DEFAULT '0' COMMENT '预估接驾时间,单位:秒', PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT '滴滴周边司机'; ``` 滴滴POI地址服务 ```sql -- 数据库大全:滴滴POI地址服务 -- 来源:YesApi.cn CREATE TABLE `yesapi_didi_poi` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `displayname` varchar(100) NOT NULL COMMENT '显示名称', `address` varchar(255) NOT NULL COMMENT '对应地址', `lng` varchar(50) NOT NULL COMMENT '地址纬度', `lat` varchar(50) NOT NULL COMMENT '地址经度', `maptype` varchar(20) NOT NULL COMMENT '坐标类型,默认soso', PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT '滴滴POI地址服务'; ``` 滴滴运力类型 ```sql -- 数据库大全:滴滴运力类型 -- 来源:YesApi.cn CREATE TABLE `yesapi_didi_products` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `product_type` varchar(100) NOT NULL COMMENT '产品类型', `ride_type` varchar(20) NOT NULL COMMENT '运力类型', `display_name` varchar(100) NOT NULL COMMENT '英文显示名', `display_name_cn` varchar(100) NOT NULL COMMENT '中文显示名', `seats` int(10) NOT NULL DEFAULT '0' COMMENT '座位数量', `car_type` int(10) NOT NULL DEFAULT '0' COMMENT '车类型', `image_url` varchar(100) NOT NULL COMMENT '车型图片地址', PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT '滴滴运力类型'; ``` 滴滴预估时间 ```sql -- 数据库大全:滴滴预估时间 -- 来源:YesApi.cn CREATE TABLE `yesapi_didi_time` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `product_type` varchar(20) NOT NULL COMMENT '产品类型', `ride_type` varchar(20) NOT NULL COMMENT '运力类型', `estimate_eta` int(10) NOT NULL DEFAULT '0' COMMENT '预估接驾时间,单位:秒', PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT '滴滴预估时间'; ``` 滴滴计价规则 ```sql -- 数据库大全:滴滴计价规则 -- 来源:YesApi.cn CREATE TABLE `yesapi_didi_standard` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `product_type` varchar(20) NOT NULL COMMENT '产品类型', `ride_type` varchar(20) NOT NULL COMMENT '运力类型', `distance_unit` varchar(10) NOT NULL COMMENT '路程计价单位', `cost_per_minute` int(10) NOT NULL DEFAULT '0' COMMENT '每分钟价格,单位:分', `minimum` int(10) NOT NULL DEFAULT '0' COMMENT '最低消费,单位:分', `cost_per_distance` int(10) NOT NULL DEFAULT '0' COMMENT '每单位里程费用,单位:分', `base` int(10) NOT NULL DEFAULT '0' COMMENT '起步价,单位:分', `cancellation_fee` int(10) NOT NULL DEFAULT '0' COMMENT '行程接单后的取消费用(如果有责取消),单位:分', `currency_code` varchar(100) NOT NULL COMMENT '货币类型(CNY,人民币)', PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT '滴滴计价规则'; ``` ### 生成mock/模拟数据 #### 行为数据 修改mockdata/resource/logback.xml的保存路径,我这里设置为`/tmp/logs/` ```xaml ``` 使用maven打为jar包并部署到服务器上 运行 ``` java -cp unlinewarehose-mocklog-dev-1.0.1-jar-with-dependencies.jar com.glong.appclient.AppMain ``` 查看 ``` vim /tmp/logs/app-2021-05-10.log ``` AppBase ```java private String mid; // (String) 设备唯一标识 private String uid; // (String) 用户uid private String vc; // (String) versionCode,程序版本号 private String vn; // (String) versionName,程序版本名 private String l; // (String) 系统语言 private String sr; // (String) 渠道号,应用从哪个渠道来的。 private String os; // (String) Android系统版本 private String ar; // (String) 区域 private String md; // (String) 手机型号 private String ba; // (String) 手机品牌 private String sv; // (String) sdkVersion private String g; // (String) gmail private String hw; // (String) heightXwidth,屏幕宽高 private String t; // (String) 客户端日志产生时的时间 private String nw; // (String) 网络模式 private String ln; // (double) lng 经度 private String la; // (double) lat 纬度 ``` #### 业务数据 ### 采集数据 ### 存储数据 ### 建立数仓 从HDFS中将数据导入到hive中,建立4层数仓 | 数仓分层 | 意义 | 要求 | | -------- | --------------------- | ------------------------------------------ | | ODS | 原始数据层 | 保持数据原貌,不做任何修改,起到备份的作用 | | DWD | 数据明细层/数据降维层 | 选择业务过程,申明粒度,确认维度,确认事实 | | DWS | | | | ADS | 应用数据层 | | #### ODS ods保持数据原貌,不做任何修改,起到备份的作用。只需要创建分区,并将lzo改为正常。 ```markdown 1. drop table if exist ods_log 删除 2. create external table ods_log() 创建外部表 3. 创建分区 4. lzo压缩 5. load data input xxx override into ods_log from xxx 剪切导入 ``` #### DWD ### 数据统计 ### 全面监控 ### 报表管理 ## TODO:clock10: ## 更新日志:watermelon: - 2021-5-8 - 寻找研究对象 - 2021-4-29 - 初始化项目 ## 结果展示:chart_with_upwards_trend: 使用大数据屏幕展示 [react-big-screen](https://gitee.com/MTrun/react-big-screen) : 🔥一个基于React、Dva、ECharts、DataV的框架大数据可视化(大屏展示)模板。支持数据动态刷新渲染、屏幕适配、数据mock、局部样式、图表自由替换/复用等功能 文档:http://datav-react.jiaminghi.com/guide/ ``` npm install npm run start ``` http://localhost:9000/#/ ``` options.js 中国地图城市的属性 ```