2022-2023赛季高职大数据竞赛-赛规任务剖析
本系列共分五篇,内容分别为:
- 第一部分 2022-2023赛季高职大数据竞赛-赛规说明
- 第二部分 2022-2023赛季高职大数据竞赛-赛规任务剖析
- 第三部分 2022-2023赛季高职大数据竞赛(样题解析)-离线数据处理-任务一:数据抽取
- 第四部分 2022-2023赛季高职大数据竞赛(样题解析)-离线数据处理-任务二:数据清洗
- 第五部分 2022-2023赛季高职大数据竞赛(样题解析)-离线数据处理-任务三:指标计算
- 第六部分 2022-2023赛季高职大数据竞赛(样题解析)-数据挖掘-任务一:特征工程(一)
- 第七部分 2022-2023赛季高职大数据竞赛(样题解析)-数据挖掘-任务二:推荐系统(一))
- 第八部分 2022-2023赛季高职大数据竞赛(样题解析)-数据挖掘-任务三:特征工程(二)
- 第九部分 2022-2023赛季高职大数据竞赛(样题解析)-数据挖掘-任务四:推荐系统(二)
- 第十部分 2022-2023赛季高职大数据竞赛(样题解析)-数据采集与实时计算-任务一:实时数据采集
- 第十一部分 2022-2023赛季高职大数据竞赛(样题解析)-数据采集与实时计算-任务二:使用Flink处理Kafka中的数据
任务一:大数据平台环境搭建
任务要求
按照任务书要求,需要基于Docker环境完成Hadoop完全分布式、Spark安装配置、Flink安装配置、Hive安装配置、Kafka安装配置、Flume安装配置、ClickHouse安装配置、HBase安装配置等中的任意三个组件的安装配置。
分析
与以前的任务相比,这次一个显著的变化是“任意三个组件的安装配置”。下面列出了可参考的配置资源:
- Hadoop完全分布式:请参考Hadoop-3.2.1环境搭建(3)_完全分布模式。
- Spark安装配置:《Spark实用教程_v3.1.2》,参考1.5小节内容
- Flink安装配置:Flink完全分布式集群安装
- Hive安装配置:安装和使用Hive
- Kafka安装配置:安装Kafka集群
- Flume安装配置:安装Apache Flume
- ClickHouse安装配置:安装ClickHouse数据库
- HBase安装配置:HBase的安装和部署(3)_完全分布模式
任务二:数据采集
任务要求
按照任务书要求基于Scala语言基于Spark完成离线数据采集,将数据存入Hive的ods层中;按照任务书要求使用Linux命令,利用Flume、Maxwell等工具完成实时数据采集,将数据存入Kafka指定的Topic中。
分析
与以前的任务相比,这次增加了新的工具Maxwell,用来实时采集MySQL的数据变更日志。下面列出了可参考的配置资源:
- 编程语言采用Scala:请参考Scala3教程
- 开发工具:IDEA 2019社区版。本次样卷中没有给出更多的说明,但参考往年对IDEA的要求,应该是会要求创建Maven类型的项目,出卷方会给出pom.xml依赖配置文件(竞赛环境是不能上外网的,创建项目后把pom.xml复制进去即可)。因此参赛选手需要掌握如何使用IDEA创建Maven项目,可参考小白学苑的教程:使用IntelliJ IDEA开发Spark Maven应用程序。
-
任务中提到“基于Spark完成离线数据采集,将数据存入Hive的ods层中”,这个任务要求涉及到以下几个知识点:
- ODS层:我们理解为出卷方意指Hive的ODS层。ODS是个数据仓库的概念“数据贴源层”,简单理解就是刚加载到Hive中的原始数据所存放的层就是ODS层,表就是ODS表。更详细的概念解释,请自行google或biying。
- Spark集成Hive:既然要将数据ETL到Hive中,就需要配置Spark能访问Hive的元数据库Metastore。集成方法请参考《Spark实用教程_v3.1.2》,5.7小节内容。
- IDEA开发环境支持Hive:同样,要在IDEA中添加相应的依赖配置、JDBC驱动等。集成方法请参考《Spark实用教程_v3.1.2》,5.7小节内容。
- 以上任务要求所涉及到的开发编程技术,可参考小白学苑的案例_Spark SQL实现数据ETL到Hive ODS教程,里面有详细的讲解和参考代码实现。
-
任务中提到“要求使用Linux命令,利用Flume、Maxwell等工具完成实时数据采集,将数据存入Kafka指定的Topic中”,这个任务实际涉及两个子任务:
- (1)实时数据生成器 -> Flume Socket端口 -> Kafka Topic;
- (2)MySQL binlog -> Maxwell -> Kafka Topic
- Kafka的安装、配置和使用,以及与Flume的集成,请参考小白学苑Kafka教程。
- Maxwell配置及使用,请参考本系列解析教程。
- PBCP2023(个人大数据竞赛练习平台)内置了实时数据源脚本、Maxwell以及MySQL binlog配置。
任务三:实时数据处理
任务要求
按照任务书要求使用Scala语言基于Flink完成Kafka中的数据消费,将数据分发至Kafka的dwd层中,并在HBase中进行备份同时建立Hive外表,基于Flink完成相关的数据指标计算并将计算结果存入Redis、ClickHouse中。
分析
与上一赛季相比,本赛季对于实时数据仓库部分,加大了占比(25%),并增加了新的考核点:1)将流数据写入HBase;2)通过Hive查询HBase数据;3)将数据写入ClickHouse。
可参考资源如下:
- 项目使用Maven构建。《Flink实用教程》第2.2节,或使用IntelliJ IDEA+Maven开发Flink项目
- Flink写Redis和MySQL,请参考《Flink实用教程》相关章节。
- 样题库中实时部分任务较多,相关参考实现,请访问本系列解析教程相应部分的内容。
任务四:离线数据处理
任务要求
按照任务书要求使用Scala语言基于Spark完成离线数据清洗、处理、计算,包括数据的合并、去重、排序、数据类型转换等并将计算结果存入MySQL、HBase、ClickHouse中。
分析
与上一赛季相比,离线数据处理部分,增加了新的考核点:1)将处理结果写入HBase(但在样题库中没有发现有此任务);2)将处理结果写入写入ClickHouse。
- 清洗任务使用Spark SQL DataFrame API实现,可参考小白学苑的教程“示例_数据缺失值处理”和“示例_数据整合、清洗与转换”。
- “统计指定几个月的销售额并存入MySQL”:与上一任务类似,再加上使用where(或filter)过滤指定的几个月销售数据。
- 以上几个任务涉及“存入MySQL”的要求,实际上是要求将统计的结果集DataFrame写出到MySQL数据库中,可参考小白学苑的教程“存储DataFrame”中的示例-“示例2:将DataFrame存储到MySQL表中”。
- 以上几个任务涉及“存入ClickHouse”的要求,实际上是要求将统计的结果集DataFrame写出到ClickHouse数据库中,可参考本系列解析教程中相应部分的内容。
任务五:数据可视化
任务要求
按照任务书要求编写前端代码,调用后台数据接口,使用Vue.js、ECharts完成数据可视化。
分析
可视化部分与上一赛季相比,没有明显变化,仍然考察前端框架Vue.js、图表库ECharts以及RESTful API接口调用。其中:
- 使用ECharts绘制柱状图、折线图、饼图等,比较简单,参考ECharts官网上的Demo即可,实现时将其中静态数据替换为服务器端获取的动态数据即可;
- 可视化所需数据,比赛服务器已经提供好了Web Service接口,我们只需要在Vue工程文件中调用此接口获取数据就可以了。在小白学苑PBCP2023平台中,提供了模拟RESTful API接口以供测试。
- Web程序客户端实现:要求使用vue.js前端框架,倒创建Vue工程,使用ECharts可视化组件。开发工具要求使用的是Visual Studio Code。这部分技术请参考小白学苑Vue.js系列教程。
任务六:综合分析报告
任务要求
按照任务书要求,完成综合分析报告编写。
分析
综合分析部分,通常涉及到性能优化、比赛中遇到的难点的解析方案(或思路)。前者,可参考2022(7.20更新)高职大数据竞赛-任务书模块F-综合分析-参考解答部分。后者,则需要大家根据自己比赛中遇到的问题进行阐述,记得一点要有问题应对或解决方法的内容。