模板项目-学生课程实训培养计划

by prentiss 2022-09-16

项目简介

业务系统建表都会遵循三范式,减少数据的冗余,但是在大数据平台,一般会减少这种关联以提高资源利用率。本项目通过对学生课程示例数据的分析,向大家展示反三范式数据处理,以减少后续步骤的关联。克隆该项目可用于尝试完成学生课程实训培养计划与大数据人才市场分析。

本项目通过对学生、课程及教师信息的采集,进行聚合计算,再进行数据转换导出与可视化展示等步骤,展示一个简短而完整的数据分析项目并进行价值输出。

项目包含以下步骤:

  1. 数据采集:采集预置数据表
  2. 数据处理:将采集至Hive库的数据表进行聚合计算,产出宽表
  3. 数据转换:将Hive结果表导出到MySQL数据库,以便下游业务系统使用
  4. 可视化展示:基于业务需求进行Superset看板可视化展示

项目步骤

1. 采集学生信息表

步骤简介

通过数据库采集步骤,把本示例项目准备的预制MySQL数据表,采集至目标Hive库,以便后续的数据分析与处理。

库表权限说明

  • public_mysql:为示例/向导项目专属MySQL库;用户使用权限:读
  • public_project_data:为向导项目专属Hive库;用户使用权限:读
  • user_beta:为示例项目专属Hive库;用户使用权限:读
  • org_xxx:为机构项目Hive库(用户角色切换至Admin/DevOps可创建该类型项目,xxx为机构名称,可点击界面右上角获取),付费机构可在机构下的多用户间可共享数据;用户使用权限:读写
  • user_xxx:为个人项目Hive库(用户角色切换至个人账号可创建该类型项目),机构内各成员可独享该类型库;用户使用权限:读写

采集数据源配置

  • 数据源:public_mysql
  • 表:ex_students_info
  • 数据范围:全量采集

保持默认,无需修改,点击下一步

采集输出配置

  • Hive数据库名称:下拉框选择org_xxx或者user_xxx
  • Hive表名称:ex_students_info_full01

其他内容保持默认,无需修改,点击【保存】并【运行】

2. 采集教师信息表

步骤简介

通过数据库采集步骤,把本示例项目准备的预制MySQL数据表,采集至目标Hive库,以便后续的数据分析与处理。

库表权限说明

  • public_mysql:为示例/向导项目专属MySQL库;用户使用权限:读
  • public_project_data:为向导项目专属Hive库;用户使用权限:读
  • user_beta:为示例项目专属Hive库;用户使用权限:读
  • org_xxx:为机构项目Hive库(用户角色切换至Admin/DevOps可创建该类型项目,xxx为机构名称,可点击界面右上角获取),付费机构可在机构下的多用户间可共享数据;用户使用权限:读写
  • user_xxx:为个人项目Hive库(用户角色切换至个人账号可创建该类型项目),机构内各成员可独享该类型库;用户使用权限:读写

采集数据源配置

  • 数据源:public_mysql
  • 表:ex_teacher_info
  • 数据范围:全量采集

保持默认,无需修改,点击下一步

采集输出配置

  • Hive数据库名称:下拉框选择org_xxx或者user_xxx
  • Hive表名称:ex_teacher_info_full01

其他内容保持默认,无需修改,点击【保存】并【运行】

3. 采集学生课程表

步骤简介

通过数据库采集步骤,把本示例项目准备的预制MySQL数据表,采集至目标Hive库,以便后续的数据分析与处理。

库表权限说明

  • public_mysql:为示例/向导项目专属MySQL库;用户使用权限:读
  • public_project_data:为向导项目专属Hive库;用户使用权限:读
  • user_beta:为示例项目专属Hive库;用户使用权限:读
  • org_xxx:为机构项目Hive库(用户角色切换至Admin/DevOps可创建该类型项目,xxx为机构名称,可点击界面右上角获取),付费机构可在机构下的多用户间可共享数据;用户使用权限:读写
  • user_xxx:为个人项目Hive库(用户角色切换至个人账号可创建该类型项目),机构内各成员可独享该类型库;用户使用权限:读写

采集数据源配置

  • 数据源:public_mysql
  • 表:ex_students_courses
  • 数据范围:全量采集

保持默认,无需修改,点击下一步

采集输出配置

  • Hive数据库名称:下拉框选择org_xxx或者user_xxx
  • Hive表名称:ex_students_courses_full01

其他内容保持默认,无需修改,点击【保存】并【运行】

4. 数据集合计算

步骤简介

通过Hive步骤进行HQL业务逻辑代码编写与运行,对采集至Hive库的数据表进行处理

库表权限说明

  • user_beta:为示例项目专属Hive库;用户使用权限:读
  • org_xxx:为机构项目Hive库(用户角色切换至Admin/DevOps可创建该类型项目,xxx为机构名称,可点击界面右上角获取),付费机构可在机构下的多用户间可共享数据;用户使用权限:读写
  • user_xxx:为个人项目Hive库(用户角色切换至个人账号可创建该类型项目),机构内各成员可独享该类型库;用户使用权限:读写

编写主程序

--用户需要使用实际的Hive库名,替换示例Hive库”user_xxx“
-- 例如:机构项目使用:org_xxx(xxx为机构名),个人项目使用:user_xxx (xxx为用户名),可在界面右上角获取
use user_xxx;
drop table ex_students_courses_flat;

CREATE TABLE if not exists ex_students_courses_flat (
`id` bigint COMMENT 'mysql自增id',
`user_id_wc` string COMMENT '用户id',
`user_name_wc` string COMMENT '用户名',
`school_id` bigint COMMENT '学校id',
`school_name` string COMMENT '学校名',
`colledge_id` string COMMENT '学院id',
`colledge_name` string COMMENT '学院名',
`major_id` string COMMENT '专业id',
`major_name` string COMMENT '专业名',
`class_id` string COMMENT '班级id',
`class_name` string COMMENT '班级名',
`course_id_wc` string COMMENT '课程id',
`course_name` string COMMENT '课程名',
`chapter_name` string COMMENT '章节名',
`teacher_id` int COMMENT '教师id',
`teacher_name` string COMMENT '教师名',
`teacher_role` int COMMENT '教师角色',
`finished` int COMMENT '是否完成,0-未完成,1-完成',
`duration_visit` int COMMENT '访问时长',
`duration_active` int COMMENT '活跃访问时长',
`visit_count` int COMMENT '访问次数',
`day_count` int COMMENT '天访问次数',
`date` string COMMENT '时间'
)
STORED AS orc
TBLPROPERTIES ("orc.compress"="SNAPPY");

INSERT OVERWRITE TABLE ex_students_courses_flat
SELECT t1.id
    , t1.user_id_wc
    , t2.user_name_wc
    , t2.school_id
    , t2.school_name
    , t2.colledge_id
    , t2.colledge_name
    , t2.major_id
    , t2.major_name
    , t1.class_id
    , t1.class_name
    , t1.course_id_wc
    , t1.course_name
    , t1.chapter_name
    , t1.teacher_id
    , t3.name
    , t1.teacher_role
    , t1.finished
    , t1.duration_visit
    , t1.duration_active
    , t1.visit_count
    , t1.day_count
    , t1.`date`
FROM skills_ex_students_courses_full01 t1
left join skills_ex_students_info_full01 t2
  on t1.user_id_wc = t2.user_id_wc
left join skills_ex_teacher_info_full01 t3
  on t1.teacher_id = t3.id

5. 导出结果数据表至MySQL

步骤简介

通过ETL步骤,把处理完成的Hive结果表转换至目标MySQL库,以方便下游的看板可视化展示

库表权限说明

  • FM-ds-<机构名>:机构项目MySQL库,用户角色切换至Admin/DevOps可选择该类型数据源
  • FM-ds<用户名>:个人项目MySQL库,用户角色切换至个人可选择该类型数据源

输入源配置

  • 数据源类型:Hive
  • 数据库:下拉框选择user_xxx或者org_xxx(xxx为用户名或机构名)
  • 表:ex_students_courses_flat

其他内容,保持默认,点击【下一步】

输出源配置

  • 数据源类型:MySQL
  • 数据源:下拉框选择FM-ds-<机构名>或者FM-ds-<用户名>
  • 表:ex_students_courses_flat
  • 数据变更:Update

其他内容,保持默认,点击【下一步】,点击【保存】并【运行】

6. BI看板可视化

步骤简介

通过本步骤可使用Superset集成工具,对ETL的MySQL输出表进行基于业务的BI看板可视化展示

Superset使用指南可参考BDOS Online 官方指南:https://www.linktimecloud.com/posts/6346

留言

评论

${{item['author_name']}} 回复 ${{idToContentMap[item.parent] !== undefined ? idToContentMap[item.parent]['author_name'] : ''}} · ${{item.date.slice(0, 10)}} 回复

暂时还没有一条评论.