2022年全国职业院校技能大赛(高职组)

目录

  • 2022年全国职业院校技能大赛(高职组)
    • 模块A:大数据平台搭建(容器环境)(15分)
      • 任务一:Hadoop 完全分布式安装配置
      • 任务二:Spark on Yarn安装配置
      • 任务三:Flink on Yarn安装配置
    • 模块B:离线数据处理(25分)
      • 任务一:数据抽取
      • 任务二:数据清洗
      • 任务三:指标计算

“大数据技术与应用”赛项赛卷(1卷)

背景描述
大数据时代背景下,电商经营模式发生很大改变。在传统运营模式中,缺乏数据积累,人们在做出一些决策行为过程中,更多是凭借个人经验和直觉,发展路径比较自我封闭。而大数据时代,为人们提供一种全新的思路,通过大量的数据分析得出的结果将更加现实和准确。商家可以对客户的消费行为信息数据进行收集和整理,比如消费者购买产品的花费、选择产品的渠道、偏好产品的类型、产品回购周期、购买产品的目的、消费者家庭背景、工作和生活环境、个人消费观和价值观等。通过数据追踪,知道顾客从哪儿来,是看了某网站投放的广告还是通过朋友推荐链接,是新访客还是老用户,喜欢浏览什么产品,购物车有无商品,是否清空,还有每一笔交易记录,精准锁定一定年龄、收入、对产品有兴趣的顾客,对顾客进行分组、标签化,通过不同标签组合运用,获得不同目标群体,以此开展精准推送。
因数据驱动的零售新时代已经到来,没有大数据,我们无法为消费者提供这些体验,为完成电商的大数据分析工作,你所在的小组将应用大数据技术,以Scala作为整个项目的基础开发语言,基于大数据平台综合利用Spark、Flink、Vue.js等技术,对数据进行处理、分析及可视化呈现,你们作为该小组的技术人员,请按照下面任务完成本次工作。

模块A:大数据平台搭建(容器环境)(15分)

环境说明:
服务端登录地址详见各模块服务端说明。
补充说明:宿主机可通过Asbru工具或SSH客户端进行SSH访问;
相关软件安装包在宿主机的/opt目录下,请选择对应的安装包进行安装,用不到的可忽略;
所有模块中应用命令必须采用绝对路径;
进入Master节点的方式为
docker exec -it master /bin/bash
进入Slave1节点的方式为
docker exec -it slave1 /bin/bash
进入Slave2节点的方式为
docker exec -it slave2 /bin/bash

任务一:Hadoop 完全分布式安装配置

本环节需要使用root用户完成相关配置,安装Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:
1、从宿主机/opt目录下将文件hadoop-2.7.7.tar.gz、jdk-8u212-linux-x64.tar.gz复制到容器master中的/opt/software路径中(若路径不存在,则需新建),将master节点JDK安装包解压到/opt/module路径中(若路径不存在,则需新建),将JDK解压命令复制并粘贴至对应报告中;
2、修改容器中/etc/profile文件,设置JDK环境变量并使其生效,配置完毕后在master节点分别执行“java -version”和“javac”命令,将命令行执行结果分别截图并粘贴至对应报告中;
3、请完成host相关配置,将三个节点分别命名为master、slave1、slave2,并做免密登录,用scp命令并使用绝对路径从master复制JDK解压后的安装文件到slave1、slave2节点(若路径不存在,则需新建),并配置slave1、slave2相关环境变量,将全部scp复制JDK的命令复制并粘贴至对应报告中;
4、在master将Hadoop解压到/opt/module(若路径不存在,则需新建)目录下,并将解压包分发至slave1、slave2中,其中master、slave1、slave2节点均作为datanode,配置好相关环境,初始化Hadoop环境namenode,将初始化命令及初始化结果截图(截取初始化结果日志最后20行即可)粘贴至对应报告中;
5、启动Hadoop集群(包括hdfs和yarn),使用jps命令查看master节点与slave1节点的Java进程,将jps命令与结果截图粘贴至对应报告中。

任务二:Spark on Yarn安装配置

本环节需要使用root用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:
1、从宿主机/opt目录下将文件spark-2.1.1-bin-hadoop2.7.tgz复制到容器master中的/opt/software(若路径不存在,则需新建)中,将Spark包解压到路径/opt/module路径中(若路径不存在,则需新建),将完整解压命令复制粘贴至对应报告中;
2、修改容器中/etc/profile文件,设置Spark环境变量并使环境变量生效,在/opt目录下运行命令spark-submit --version,将命令与结果截图粘贴至对应报告中;
3、完成on yarn相关配置,使用spark on yarn 的模式提交$SPARK_HOME/examples/jars/spark-examples_2.11-2.1.1.jar 运行的主类为org.apache.spark.examples.SparkPi,将运行结果截图粘贴至对应报告中(截取Pi结果的前后各5行)。
(运行命令为:spark-submit --master yarn --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.11-2.1.1.jar)

任务三:Flink on Yarn安装配置

本环节需要使用root用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:
1、从宿主机/opt目录下将文件flink-1.10.2-bin-scala_2.12.tgz复制到容器master中的/opt/software(若路径不存在,则需新建)中,将Flink包解压到路径/opt/module中(若路径不存在,则需新建),将完整解压命令复制粘贴至对应报告中;
2、修改容器中/etc/profile文件,设置Flink环境变量并使环境变量生效。在容器中/opt目录下运行命令flink --version,将命令与结果截图粘贴至对应报告中;
3、开启Hadoop集群,在yarn上以per job模式(即Job分离模式,不采用Session模式)运行 $FLINK_HOME/examples/batch/WordCount.jar,将运行结果最后10行截图粘贴至对应报告中。
示例 :
flink run -m yarn-cluster -p 2 -yjm 2G -ytm 2G $FLINK_HOME/examples/batch/WordCount.jar

模块B:离线数据处理(25分)

环境说明:
服务端登录地址详见各模块服务端说明。
补充说明:各主机可通过Asbru工具或SSH客户端进行SSH访问;
Master节点MySQL数据库用户名/密码:root/123456(已配置远程连接);
Hive的配置文件位于/opt/apache-hive-2.3.4-bin/conf/
Spark任务在Yarn上用Client运行,方便观察日志。
注:该Spark版本无法进行本地调试,请打包上传集群调试。

任务一:数据抽取

使用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中。
1、抽取shtd_store库中user_info的增量数据进入Hive的ods库中表user_info。根据ods.user_info表中operate_time或create_time作为增量字段(即MySQL中每条数据取这两个时间中较大的那个时间作为增量字段去和ods里的这两个字段中较大的时间进行比较),只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.user_info命令,将结果截图粘贴至对应报告中;

2、抽取shtd_store库中sku_info的增量数据进入Hive的ods库中表sku_info。根据ods.sku_info表中create_time作为增量字段,只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.sku_info命令,将结果截图粘贴至对应报告中;

3、抽取shtd_store库中base_province的增量数据进入Hive的ods库中表base_province。根据ods.base_province表中id作为增量字段,只将新增的数据抽入,字段名称、类型不变并添加字段create_time取当前时间,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.base_province命令,将结果截图复制粘贴至对应报告中;

4、抽取shtd_store库中base_region的增量数据进入Hive的ods库中表base_region。根据ods.base_region表中id作为增量字段,只将新增的数据抽入,字段名称、类型不变并添加字段create_time取当前时间,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.base_region命令,将结果截图粘贴至对应报告中;

5、抽取shtd_store库中order_info的增量数据进入Hive的ods库中表order_info,根据ods.order_info表中operate_time或create_time作为增量字段(即MySQL中每条数据取这两个时间中较大的那个时间作为增量字段去和ods里的这两个字段中较大的时间进行比较),只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.order_info命令,将结果截图粘贴至对应报告中;

6、抽取shtd_store库中order_detail的增量数据进入Hive的ods库中表order_detail,根据ods.order_detail表中create_time作为增量字段,只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.order_detail命令,将结果截图粘贴至对应报告中。

任务二:数据清洗

使用Scala编写spark工程代码,将ods库中相应表数据全量抽取到Hive的dwd库中对应表中。表中有涉及到timestamp类型的,均要求按照yyyy-MM-dd HH:mm:ss,不记录毫秒数,若原数据中只有年月日,则在时分秒的位置添加00:00:00,添加之后使其符合yyyy-MM-dd HH:mm:ss。
1、抽取ods库中user_info表中昨天的分区(任务一生成的分区)数据,并结合dim_user_info最新分区现有的数据,根据id合并数据到dwd库中dim_user_info的分区表(合并是指对dwd层数据进行插入或修改,需修改的数据以id为合并字段,根据operate_time排序取最新的一条),分区字段为etl_date且值与ods库的相对应表该值相等,同时若operate_time为空,则用create_time填充,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填写“user1”。若该条记录第一次进入数仓dwd层则dwd_insert_time、dwd_modify_time均存当前操作时间,并进行数据类型转换。若该数据在进入dwd层时发生了合并修改,则dwd_insert_time时间不变,dwd_modify_time存当前操作时间,其余列存最新的值。使用hive cli执行show partitions dwd.dim_user_info命令,将结果截图粘贴至对应报告中;

2、抽取ods库sku_info表中昨天的分区(任务一生成的分区)数据,并结合dim_sku_info最新分区现有的数据,根据id合并数据到dwd库中dim_sku_info的分区表(合并是指对dwd层数据进行插入或修改,需修改的数据以id为合并字段,根据create_time排序取最新的一条),分区字段为etl_date且值与ods库的相对应表该值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填写“user1”。若该条数据第一次进入数仓dwd层则dwd_insert_time、dwd_modify_time均填写当前操作时间,并进行数据类型转换。若该数据在进入dwd层时发生了合并修改,则dwd_insert_time时间不变,dwd_modify_time存当前操作时间,其余列存最新的值。使用hive cli查询表dim_sku_info的字段id、sku_desc、dwd_insert_user、dwd_modify_time、etl_date,条件为最新分区的数据,id大于等于15且小于等于20,并且按照id升序排序,将结果截图粘贴至对应报告中;

3、抽取ods库base_province表中昨天的分区(任务一生成的分区)数据,并结合dim_province最新分区现有的数据,根据id合并数据到dwd库中dim_province的分区表(合并是指对dwd层数据进行插入或修改,需修改的数据以id为合并字段,根据create_time排序取最新的一条),分区字段为etl_date且值与ods库的相对应表该值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填写“user1”。若该条数据第一次进入数仓dwd层则dwd_insert_time、dwd_modify_time均填写当前操作时间,并进行数据类型转换。若该数据在进入dwd层时发生了合并修改,则dwd_insert_time时间不变,dwd_modify_time存当前操作时间,其余列存最新的值。使用hive cli在表dwd.dim_province最新分区中,查询该分区中数据的条数,将结果截图粘贴至对应报告中;

4、抽取ods库base_region表中昨天的分区(任务一生成的分区)数据,并结合dim_region最新分区现有的数据,根据id合并数据到dwd库中dim_region的分区表(合并是指对dwd层数据进行插入或修改,需修改的数据以id为合并字段,根据create_time排序取最新的一条),分区字段为etl_date且值与ods库的相对应表该值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填写“user1”。若该条数据第一次进入数仓dwd层则dwd_insert_time、dwd_modify_time均填写当前操作时间,并进行数据类型转换。若该数据在进入dwd层时发生了合并修改,则dwd_insert_time时间不变,dwd_modify_time存当前操作时间,其余列存最新的值。使用hive cli在表dwd.dim_region最新分区中,查询该分区中数据的条数,将结果截图粘贴至对应报告中;

5、将ods库中order_info表昨天的分区(任务一生成的分区)数据抽取到dwd库中fact_order_info的动态分区表,分区字段为etl_date,类型为String,取create_time值并将格式转换为yyyyMMdd,同时若operate_time为空,则用create_time填充,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填写“user1”,dwd_insert_time、dwd_modify_time均填写当前操作时间,并进行数据类型转换。使用hive cli执行show partitions dwd.fact_order_info命令,将结果截图粘贴至对应报告中;

6、将ods库中order_detail表昨天的分区(任务一中生成的分区)数据抽取到dwd库中fact_order_detail的动态分区表,分区字段为etl_date,类型为String,取create_time值并将格式转换为yyyyMMdd,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填写“user1”,dwd_insert_time、dwd_modify_time均填写当前操作时间,并进行数据类型转换。使用hive cli执行show partitions dwd.fact_order_detail命令,将结果截图粘贴至对应报告中。

任务三:指标计算

使用Scala编写spark工程代码,并计算相关指标。
注:在指标计算中,不考虑订单信息表中order_status字段的值,将所有订单视为有效订单。计算订单金额或订单总金额时只使用final_total_amount字段。需注意dwd所有的维表取最新的分区。

1、根据dwd层表统计每个省份、每个地区、每个月下单的数量和下单的总金额,存入MySQL数据库shtd_result的provinceeverymonth表中(表结构如下),然后在Linux的MySQL命令行中根据订单总数、订单总金额、省份表主键均为降序排序,查询出前5条,将SQL语句与执行结果截图粘贴至对应报告中;

字段 类型 中文含义 备注
provinceid int 省份表主键
provincename text 省份名称
regionid int 地区表主键
regionname text 地区名称
totalconsumption double 订单总金额 当月订单总金额
totalorder int 订单总数
year int
month int

2、请根据dwd层表计算出2020年4月每个省份的平均订单金额和所有省份平均订单金额相比较结果(“高/低/相同”),存入MySQL数据库shtd_result的provinceavgcmp表中(表结构如下),然后在Linux的MySQL命令行中根据省份表主键、该省平均订单金额均为降序排序,查询出前5条,将SQL语句与执行结果截图粘贴至对应报告中;

字段 类型 中文含义 备注
provinceid int 省份表 主键
provincename text 省份 名称
provinceavgconsumption double 该省平均 订单金额
allprovinceavgconsumption double 所有省平均订单金额
comparison text 比较结果 该省平均订单金额和所有省平均订单金额比较结果,值为:高/低/相同

3、根据dwd层表统计在两天内连续下单并且下单金额保持增长的用户,存入MySQL数据库shtd_result的usercontinueorder表中(表结构如下),然后在Linux的MySQL命令行中根据订单总数、订单总金额、客户主键均为降序排序,查询出前5条,将SQL语句与执行结果截图粘贴至对应报告中。

字段 类型 中文含义 备注
userid int 客户主键
username text 客户名称
day text 记录下单日的时间,格式为yyyyMMdd_yyyyMMdd例如: 20220101_20220102
totalconsumption double 订单总金额 连续两天的订单总金额
totalorder int 订单总数 连续两天的订单总数

2022年全国职业院校技能大赛(高职组)相关推荐

  1. 2022 年全国职业院校技能大赛高职组云计算赛项赛题解析-“私有云 赛项” 之 《私有云运维开发》!!超详细!

    目录 [任务 3]私有云运维开发[10 分] [题目 1]Ansible 服务部署:部署 MariaDB 集群[2 分]

  2. “2019年全国职业院校技能大赛”高职组计算机网络应用竞赛竞赛样题E~J卷(软件定义网络部分答案参考)

    "2019年全国职业院校技能大赛"高职组计算机网络应用竞赛竞赛样题E~J卷(软件定义网络部分答案参考) 2022年全国职业技能大赛网络系统管理赛项相较2021年再次做出改动,Lin ...

  3. 高职Java竞赛_2019年全国职业院校技能大赛高职组“物联网技术应用”赛项开赛...

    [2019职教周·同期赛项] 2019年全国职业院校技能大赛 高职组"物联网技术应用"赛项开赛 大赛网讯(特约记者 刘继源 摄影 靖鑫)5月7日上午,2019年全国职业院校技能大赛 ...

  4. “2012年全国职业院校技能大赛”高职组信息安全管理与评估赛项获奖名单

    http://www.chinaskills.org/news-nr.asp?anclassid=165&nclassid=741&id=2304 发布时间:2012-7-10   来 ...

  5. 2019年全国职业院校技能大赛高职组“信息安全管理与评估”赛项任务书

    2019年全国职业院校技能大赛高职组 "信息安全管理与评估"赛项任务书 赛项时间 xx-xxx,共计x小时x分,含赛题发放.收卷时间. 赛项信息 赛项内容 竞赛阶段 任务阶段 竞赛 ...

  6. 2021年全国职业院校技能大赛高职组“软件测试”赛项—“阶段二竞赛任务书”

    2021年全国职业院校技能大赛高职组 "软件测试"赛项-"阶段二竞赛任务书" 2021年6月 一.竞赛时间.内容及成绩组成 (一)竞赛时间 本阶段竞赛时间共为3 ...

  7. 高职信息安全比赛攻防思路_2019全国职业院校技能大赛高职组信息安全管理与评估赛项在汉举行...

    2019年全国职业院校技能大赛高职组"神州数码DCN"杯信息安全管理与评估赛项开幕式 荆楚网客户端--荆楚网消息(记者齐一璇 通讯员文晓韬)6月10日至13日,2019年全国职业院 ...

  8. 全国技能大赛高职组计算机网络,国赛喜讯:我校获得全国职业院校技能大赛高职组“计算机网络应用”比赛一等奖...

    6月14至16日,2019年全国职业院校技能大赛"计算机网络应用"比赛在福建平潭举行,信息工程学院院长丁爱萍.计算机网络技术教研室主任曹建春带队参加.经过近一天时间的激烈角逐,由我 ...

  9. 技能大赛计算机主板维修报表,2017年职业院校技能大赛高职组电子产品芯片级检测维修与数据恢复赛项样题...

    2017年全国职业院校技能大赛高职组 "电子产品芯片级检测维修与数据恢复"项目竞赛任务书 2017年全国职业院校技能大赛(高职组) "电子产品芯片级检测维修与数据恢复&q ...

最新文章

  1. 京东员工因两年一毛钱没涨而离职,618后跳槽涨薪翻倍
  2. C#中多线程 委托的使用
  3. SAP UI5 应用开发教程之五十二 - 如何使用 SAP UI5 的标准控件结合 Cordova 插件调用手机摄像头进行条形码扫描试读版
  4. crawler4j_迷你搜索引擎–使用Neo4j,Crawler4j,Graphstream和Encog的基础知识
  5. hdu 3405 world islands
  6. 如何在当前目录快速打开cmd
  7. Silverlight实例教程 - 理解Navigation导航框架Frame类
  8. Python语法的使用和简介
  9. 公众号点击图片变成另一张_公众号互动内容:小众潮流or下一个风口?| 新榜观察...
  10. 斥候密报_斥候密报《最强王者》三国幕后巾帼之黄月英_吉吉建站手游网
  11. python入门——P49乱入:生成器
  12. java cmd测试_Java SE 9:使用CMD提示开发和测试简单模块(第3部分)
  13. 有一种VR电影比爱情动作片更“爽”
  14. ZKTeco/熵基科技F18指纹门禁考勤一体机 破解管理员
  15. SPSS实现距离分析
  16. 腾讯乐享社区是什么?如何使用腾讯乐享?如何连接腾讯乐享和企业微信?
  17. C#服务端的微信小游戏——多人在线角色扮演(六)
  18. 今年底出版《算法竞赛》,这是大纲
  19. 伟大的领导者要做到四件事(整理自《领导力精要》史蒂芬.柯维)
  20. php常用的数组相关的函数及面向对象

热门文章

  1. JavaEE进阶——FreeMarker模板引擎
  2. 区块链上的随机性(一)概述与构造
  3. 每日五题 -202110
  4. 网页点名器(移动端、pc端)
  5. 短时间如何过Java校招
  6. 大多数的愤怒源于自己的无知——《Excel受保护视图》
  7. 微信公众号文章如何排版?
  8. 51单片机步进电机角度控制详解(免费提供代码+仿真)
  9. 论文解读:Generated Knowledge Prompting for Commonsense Reasoning
  10. 如何将两列数据转为一列数据