logo

小白学苑PBCP

PBCP, 让大数据竞赛更简单!

2022-2023赛季高职大数据竞赛-赛规任务剖析

本系列共分五篇,内容分别为:

任务一:大数据平台环境搭建

任务要求

按照任务书要求,需要基于Docker环境完成Hadoop完全分布式、Spark安装配置、Flink安装配置、Hive安装配置、Kafka安装配置、Flume安装配置、ClickHouse安装配置、HBase安装配置等中的任意三个组件的安装配置。

分析

与以前的任务相比,这次一个显著的变化是“任意三个组件的安装配置”。下面列出了可参考的配置资源:

任务二:数据采集

任务要求

按照任务书要求基于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。

可参考资源如下:

任务四:离线数据处理

任务要求

按照任务书要求使用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-综合分析-参考解答部分。后者,则需要大家根据自己比赛中遇到的问题进行阐述,记得一点要有问题应对或解决方法的内容。