目录
任务A:大数据平台搭建(容器环境)(15分)
子任务一:Hadoop 完全分布式安装配置
子任务二:Spark on Yarn安装配置
子任务三:HBase分布式安装配置
任务B:离线数据处理(25分)
子任务一:数据抽取
子任务二:数据清洗
子任务三:指标计算
任务C:数据挖掘(10分)
子任务一:特征工程
子任务二:推荐系统
任务D:数据采集与实时计算(20分)
子任务一:实时数据采集
子任务二:使用Flink处理Kafka中的数据
任务E:数据可视化(15分)
子任务一:用柱状图展示消费额最高的省份
子任务二:用柱状图展示消费额最低的省份
子任务三:用折线图展示每年上架商品数量变化
子任务四:用条形图展示平均消费额最高的省份
子任务五:用折柱混合图展示省份平均消费额和地区平均消费额
任务F:综合分析(10分)
子任务一:Flink有哪些重启策略?各个重启策略如何配置?
子任务二:Hadoop有哪些类型的调度器?简要说明其工作方法。
子任务三:分析下一年度的建仓目的地。
2023年全国职业院校技能大赛
赛题第01套
赛项名称: 大数据应用开发
英文名称: Big Data Application Development
赛项组别: 高等职业教育组
赛项编号: GZ033
背景描述
大数据时代背景下,电商经营模式发生很大改变。在传统运营模式中,缺乏数据积累,人们在做出一些决策行为过程中,更多是凭借个人经验和直觉,发展路径比较自我封闭。而大数据时代,为人们提供一种全新的思路,通过大量的数据分析得出的结果将更加现实和准确。商家可以对客户的消费行为信息数据进行收集和整理,比如消费者购买产品的花费、选择产品的渠道、偏好产品的类型、产品回购周期、购买产品的目的、消费者家庭背景、工作和生活环境、个人消费观和价值观等。通过数据追踪,知道顾客从哪儿来,是看了某网站投放的广告还是通过朋友推荐链接,是新访客还是老用户,喜欢浏览什么产品,购物车有无商品,是否清空,还有每一笔交易记录,精准锁定一定年龄、收入、对产品有兴趣的顾客,对顾客进行分组、标签化,通过不同标签组合运用,获得不同目标群体,以此开展精准推送。
因数据驱动的零售新时代已经到来,没有大数据,我们无法为消费者提供这些体验,为完成电商的大数据分析工作,你所在的小组将应用大数据技术,以Scala作为整个项目的基础开发语言,基于大数据平台综合利用Hive、Spark、Flink、Vue.js等技术,对数据进行处理、分析及可视化呈现,你们作为该小组的技术人员,请按照下面任务完成本次工作。
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:宿主机及各容器节点可通过Asbru工具或SSH客户端进行SSH访问。 |
本任务需要使用root用户完成相关配置,安装Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:
从宿主机/opt目录下将文件hadoop-3.1.3.tar.gz、jdk-8u212-linux-x64.tar.gz复制到容器Master中的/opt/software路径中(若路径不存在,则需新建),将Master节点JDK安装包解压到/opt/module路径中(若路径不存在,则需新建),将JDK解压命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
修改容器中/etc/profile文件,设置JDK环境变量并使其生效,配置完毕后在Master节点分别执行“java -version”和“javac”命令,将命令行执行结果分别截图并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
请完成host相关配置,将三个节点分别命名为master、slave1、slave2,并做免密登录,用scp命令并使用绝对路径从Master复制JDK解压后的安装文件到slave1、slave2节点(若路径不存在,则需新建),并配置slave1、slave2相关环境变量,将全部scp复制JDK的命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
在Master将Hadoop解压到/opt/module(若路径不存在,则需新建)目录下,并将解压包分发至slave1、slave2中,其中master、slave1、slave2节点均作为datanode,配置好相关环境,初始化Hadoop环境namenode,将初始化命令及初始化结果截图(截取初始化结果日志最后20行即可)粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
启动Hadoop集群(包括hdfs和yarn),使用jps命令查看Master节点与slave1节点的Java进程,将jps命令与结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下。
本任务需要使用root用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:
(运行命令为:spark-submit --master yarn --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar)
本任务需要使用root用户完成相关配置,安装HBase需要配置Hadoop和ZooKeeper等前置环境。命令中要求使用绝对路径,具体要求如下:
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问; 主节点MySQL数据库用户名/密码:root/123456(已配置远程连接); Hive的配置文件位于/opt/apache-hive-2.3.4-bin/conf/ Spark任务在Yarn上用Client运行,方便观察日志。 |
编写Scala代码,使用Spark将MySQL的shtd_store库中表user_info、sku_info、base_province、base_region、order_info、order_detail的数据增量抽取到Hive的ods库中对应表user_info、sku_info、base_province、base_region、order_info、order_detail中。(若ods库中部分表没有数据,正常抽取即可)
编写Scala代码,使用Spark将ods库中相应表数据全量抽取到Hive的dwd库中对应表中。表中有涉及到timestamp类型的,均要求按照yyyy-MM-dd HH:mm:ss,不记录毫秒数,若原数据中只有年月日,则在时分秒的位置添加00:00:00,添加之后使其符合yyyy-MM-dd HH:mm:ss。(若dwd库中部分表没有数据,正常抽取即可)
编写Scala代码,使用Spark计算相关指标。
注:在指标计算中,不考虑订单信息表中order_status字段的值,将所有订单视为有效订单。计算订单金额或订单总金额时只使用final_total_amount字段。需注意dwd所有的维表取最新的分区。
字段 |
类型 |
中文含义 |
备注 |
provinceid |
int |
省份表主键 |
|
provincename |
text |
省份名称 |
|
regionid |
int |
地区表主键 |
|
regionname |
text |
地区名称 |
|
totalconsumption |
double |
订单总金额 |
当月订单总金额 |
totalorder |
int |
订单总数 |
当月订单总数 |
year |
int |
年 |
订单产生的年 |
month |
int |
月 |
订单产生的月 |
字段 |
类型 |
中文含义 |
备注 |
provinceid |
int |
省份表主键 |
|
provincename |
text |
省份名称 |
|
provinceavgconsumption |
double |
该省平均订单金额 |
|
allprovinceavgconsumption |
double |
所有省平均订单金额 |
|
comparison |
text |
比较结果 |
该省平均订单金额和所有省平均订单金额比较结果,值为:高/低/相同 |
字段 |
类型 |
中文含义 |
备注 |
userid |
int |
客户主键 |
|
username |
text |
客户名称 |
|
day |
text |
日 |
记录下单日的时间,格式为 yyyyMMdd_yyyyMMdd 例如: 20220101_20220102 |
totalconsumption |
double |
订单总金额 |
连续两天的订单总金额 |
totalorder |
int |
订单总数 |
连续两天的订单总数 |
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问; 主节点MySQL数据库用户名/密码:root/123456(已配置远程连接); Hive的配置文件位于/opt/apache-hive-2.3.4-bin/conf/ Spark任务在Yarn上用Client运行,方便观察日志。 该任务均使用Scala编写,利用Spark相关库完成。 |
剔除订单信息表与订单详细信息表中用户id与商品id不存在现有的维表中的记录,同时建议多利用缓存并充分考虑并行度来优化代码,达到更快的计算效果。
结果格式如下:
-------------------相同种类前10的id结果展示为:--------------------
1,2,901,4,5,21,32,91,14,52
字段 |
类型 |
中文含义 |
备注 |
id |
double |
主键 |
|
price |
double |
价格 |
|
weight |
double |
重量 |
|
spu_id#1 |
double |
spu_id 1 |
若属于该spu_id,则内容为1否则为0 |
spu_id#2 |
double |
spu_id 2 |
若属于该spu_id,则内容为1否则为0 |
..... |
double |
||
tm_id#1 |
double |
品牌1 |
若属于该品牌,则内容为1否则为0 |
tm_id#2 |
double |
品牌2 |
若属于该品牌,则内容为1否则为0 |
…… |
double |
||
category3_id#1 |
double |
分类级别3 1 |
若属于该分类级别3,则内容为1否则为0 |
category3_id#2 |
double |
分类级别3 2 |
若属于该分类级别3,则内容为1否则为0 |
…… |
结果格式如下:
--------------------第一条数据前10列结果展示为:---------------------
1.0,0.892346,1.72568,0.0,0.0,0.0,0.0,1.0,0.0,0.0
结果格式如下:
------------------------推荐Top5结果如下------------------------
相似度top1(商品id:1,平均相似度:0.983456)
相似度top2(商品id:71,平均相似度:0.782672)
相似度top3(商品id:22,平均相似度:0.7635246)
相似度top4(商品id:351,平均相似度:0.7335748)
相似度top5(商品id:14,平均相似度:0.522356)
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问; Flink任务在Yarn上用per job模式(即Job分离模式,不采用Session模式),方便Yarn回收资源。 |
编写Scala代码,使用Flink消费Kafka中Topic为order的数据并进行相应的数据统计计算(订单信息对应表结构order_info,订单详细信息对应表结构order_detail(来源类型和来源编号这两个字段不考虑,所以在实时数据中不会出现),同时计算中使用order_info或order_detail表中create_time或operate_time取两者中值较大者作为EventTime,若operate_time为空值或无此列,则使用create_time填充,允许数据延迟5s,订单状态分别为1001:创建订单、1002:支付订单、1003:取消订单、1004:完成订单、1005:申请退回、1006:退回完成。另外对于数据结果展示时,不要采用例如:1.9786518E7的科学计数法)。
环境说明:
数据接口地址及接口描述详见各任务服务端说明。 |
编写Vue工程代码,根据接口,用柱状图展示2020年消费额最高的5个省份,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
编写Vue工程代码,根据接口,用柱状图展示2020年消费额最低的5个省份,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
编写Vue工程代码,根据接口,用折线图展示每年上架商品数量的变化情况,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
编写Vue工程代码,根据接口,用条形图展示2020年平均消费额(四舍五入保留两位小数)最高的5个省份,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
编写Vue工程代码,根据接口,用折柱混合图展示2020年各省份平均消费额(四舍五入保留两位小数)和地区平均消费额(四舍五入保留两位小数)的对比情况,柱状图展示平均消费额最高的5个省份,折线图展示这5个省所在的地区的平均消费额变化,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
在任务D中使用到了Flink,Flink在运行job时可能会出现各种问题,从而会导致其失败或者重启,对于类似于网络波动造成的运行失败可以采取相对应重启策略来重试,请问Flink有几种重启策略(中文)?分别怎么配置这些重启策略?将内容编写至客户端桌面【Release\任务F提交结果.docx】中对应的任务序号下。
简要描述Hadoop有哪些类型的调度器并简要说明其工作方法,将内容编写至客户端桌面【Release\任务F提交结果.docx】中对应的任务序号下。
根据任务E的图表,分析各省份的经济现状,公司决定挑选3个省份进行仓储建设,请问应该在哪些省份建设?将内容编写至客户端桌面【Release\任务F提交结果.docx】中对应的任务序号下。