2025年广东省职业院校技能大赛“大数据应用与服务”竞赛样题三

2025年广东省职业院校技能大赛“大数据应用与服务”竞赛样题三


大数据应用与服务交流:982262433

一、背景描述

大数据时代背景下,人们的出行方式发生了显著变化。共享单车作为一种新型的城市短途出行解决方案,不仅满足了人们"最后一公里"的出行需求,也为城市交通带来了新的活力。在传统的运营模式中,由于缺乏数据支持,共享单车的投放和调度主要依靠运营人员的经验判断,导致供需失衡、车辆分布不均等问题。而在大数据时代,通过对骑行数据的分析,可以更精准地预测用户需求,优化车辆调度,提升运营效率。
共享单车平台可以收集包括用户骑行轨迹、使用时段、车辆状态等多维度数据。通过对这些数据的分析,可以识别热门区域和时段,预测车辆使用需求,优化调度策略,同时也能够对车辆维护进行预警,提升用户体验。这些数据还可以为城市交通规划提供重要参考,助力智慧城市建设。
因数据驱动的大数据时代已经到来,没有大数据,我们无法为用户提供高效的共享单车服务。为完成共享单车使用数据分析工作,你所在的小组将应用大数据技术,通过Python语言以数据采集为基础,将采集的数据进行相应处理,并且进行数据标注、数据分析与可视化、通过大数据业务分析方法实现相应数据分析。运行维护数据库系统保障存储数据的安全性。通过运用相关大数据工具软件解决具体业务问题。你们作为该小组的技术人员,请按照下面任务完成本次工作。

二、模块一:平台搭建与运维

(一)任务一:大数据平台搭建

1.子任务一:基础环境准备
本任务需要使用 root 用户完成相关配置,安装 Hadoop 需要配置前置环境。命令中要求使用绝对路径,具体要求如下:
(1)配置三个节点的主机名,分别为 master、slave1、slave2,然后修改三个节点的 hosts 文件,使得三个节点之间可以通过主机名访问,在 master上将执行命令 cat /etc/hosts 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;
(2)将 /opt/software 目录下将文件 jdk-8u191-linux-x64.tar.gz 安装包解压到 /opt/module 路径中,将 JDK 解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(3)在 /etc/profile 文件中配置 JDK 环境变量 JAVA_HOME 和 PATH 的值,并让配置文件立即生效,将在 master上 /etc/profile 中新增的内容复制并粘贴至【提交结果.docx】中对应的任务序号下;
(4)查看 JDK 版本,检测 JDK 是否安装成功,在 master 上将执行命令 java -version 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;
(5)创建 hadoop 用户并设置密码,为 hadoop 用户添加管理员权限。在 master 上将执行命令 grep ‘hadoop’ /etc/sudoers 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;
(6)关闭防火墙,设置开机不自动启动防火墙,在 master 上将执行命令 systemctl status firewalld 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;
(7)配置三个节点的 SSH 免密登录,在 master 上通过 SSH 连接 slave1 和 slave2 来验证。
2.子任务二:Hadoop 完全分布式安装配置
本任务需要使用 root 用户和 hadoop 用户完成相关配置,使用三个节点完成 Hadoop 完全分布式安装配置。命令中要求使用绝对路径,具体要求如下:
(1)在 master 节点中的 /opt/software 目录下将文件 hadoop-3.3.6.tar.gz 安装包解压到 /opt/module 路径中,将 hadoop 安装包解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(2)在 master 节点中将解压的 Hadoop 安装目录重命名为 hadoop,并修改该目录下的所有文件的所属者为 hadoop,所属组为 hadoop,将修改所属者的完整命令复制并粘贴至【提交结果.docx】中对应的任务序号下;
(3)在 master 节点中使用 hadoop 用户依次配置 hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、masters 和 workers 配置文件,Hadoop集群部署规划如下表,将 yarn-site.xml 文件内容复制并粘贴至【提交结果.docx】中对应的任务序号下;

服务器masterslave1slave2
HDFSNameNode
HDFSSecondaryNameNode
HDFSDataNodeDataNodeDataNode
YARNResourceManager
YARNNodeManagerNodeManagerNodeManager
历史日志服务器JobHistoryServer

(二)任务二:数据库服务器的安装与运维

  1. 子任务一:MySQL 安装配置
    本任务需要使用 rpm 工具安装 MySQL 并初始化,具体要求如下:
    (1)在 master 节点中的 /opt/software 目录下将 MySQL 5.7.44 安装包解压到 /opt/module 目录下;
    (2)在 master 节点中使用 rpm -ivh 依次安装 mysql-community-common、mysql-community-libs、mysql-community-libs-compat、mysql-community-client 和 mysql-community-server 包,将所有命令复制粘贴至【提交结果.docx】中对应的任务序号下;
    (3)在 master 节点中启动数据库系统并初始化 MySQL 数据库系统,将完整命令复制粘贴至【提交结果.docx】中对应的任务序号下。
  2. 子任务二:MySQL 运维
    本任务需要在成功安装 MySQL 的前提下,对 MySQL 进行运维操作,具体要求如下:
    (1)配置服务端 MySQL 数据库的远程连接,将新增的配置内容复制粘贴至【提交结果.docx】中对应的任务序号下;
    (2)配置 root 用户允许任意 IP 连接,将完整命令复制粘贴至【提交结果.docx】中对应的任务序号下;
    (3)通过 root 用户登录 MySQL 数据库系统,查看 mysql 库下的所有表,将完整命令及执行命令后的结果复制粘贴至【提交结果.docx】中对应的任务序号下;
    (4)创建新的用户 bike_admin,将完整命令及执行命令后的结果复制粘贴至【提交结果.docx】中对应的任务序号下;
    (5)创建数据库 bike_data,并设置正确的字符集,将完整命令及执行命令后的结果复制粘贴至【提交结果.docx】中对应的任务序号下;
    (6)授予新用户查询数据和插入数据的权限,将完整命令及执行命令后的结果复制粘贴至【提交结果.docx】中对应的任务序号下;
    (7)刷新权限,将完整命令及执行命令后的结果复制粘贴至【提交结果.docx】中对应的任务序号下。
  3. 子任务三:数据表的创建及维护
    (1)根据以下数据字段在 bike_data 数据库中创建骑行记录表(ride_records)。骑行记录表字段如下:
*字段**类型**中文含义**备注*
*id*int记录编号主键
*bike_id*varchar单车编号
*user_id*varchar用户ID
*start_time*datetime开始时间
*end_time*datetime结束时间
*start_location*varchar起始位置
*end_location*varchar结束位置
*ride_distance*double骑行距离(km)
*ride_duration*int骑行时长(分钟)

(2)根据以下数据字段在 bike_data 数据库中创建单车状态表(bike_status)。单车状态表字段如下:

*字段**类型**中文含义**备注*
*bike_id*varchar单车编号主键
*status*varchar车辆状态
*battery_level*int电量百分比
*last_maintain_time*datetime最后维护时间
*current_location*varchar当前位置
*total_mileage*double总里程(km)

将这两个 SQL 建表语句分别复制粘贴至【提交结果.docx】中对应的任务序号下。
(3)根据已提供的 SQL 文件将这两份数据导入 bike_data 数据库中,并对其中的数据进行如下操作:
在 ride_records 表中查询骑行时长超过60分钟的记录数量;
在 bike_status 表中统计各个状态的单车数量;
将这两个 SQL 语句分别复制粘贴至【提交结果.docx】中对应的任务序号下。

三、模块二:数据获取与处理

(一)任务一:数据获取与清洗

  1. 子任务一:数据获取
    有一份共享单车使用数据,包含以下字段:骑行ID、单车编号、用户ID、开始时间、结束时间、起始位置、结束位置、骑行距离(km)、骑行时长(分钟)、天气状况、温度、周末标记。
    数据已存入 bike_rides.csv 文件中,请使用 pandas 读取 bike_rides.csv 并将数据集的前10行打印在 IDE 终端的截图复制粘贴至【提交结果.docx】中对应的任务序号下。
  2. 子任务二:使用 Python 进行数据清洗
    现已从共享单车平台获取到原始数据集,为保障用户隐私和商业敏感信息,已进行数据脱敏处理。数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及用户安全数据或者商业敏感数据的情况下,不违反系统规则条件下,对真实数据进行改造并提供测试使用。
    请使用 pandas 库加载并分析相关数据集,根据题目规定要求使用 pandas 库实现数据处理,具体要求如下:
    (1)删除骑行距离为空或为0的记录,并将结果存储为 cleaned_data_c1_N.csv,N 为删除的数据条数;
    (2)删除骑行时长小于1分钟或大于24小时的异常记录,并将结果存储为 cleaned_data_c2_N.csv,N 为删除的数据条数;
    (3)将天气状况中的空值替换为该时段最常见的天气状况,并存储为 cleaned_data_c3_N.csv,N 为修改的数据条数;
    (4)识别并删除重复的骑行记录,将结果存储为 cleaned_data_c5_N.csv,N 为删除的数据条数;
    将该 4 个文件名截一张图复制粘贴至【提交结果.docx】中对应的任务序号下。

(二)任务二:数据标注

  1. 子任务一:骑行距离分类标注
    使用 Python 编写脚本,根据骑行距离将骑行记录分为三类:“短途”、“中途"和"长途”。具体的分类要求如下:
    (1)短途:骑行距离小于2公里;
    (2)中途:骑行距离在2公里至5公里之间;
    (3)长途:骑行距离超过5公里;
    在数据集中新增一列"距离分类",根据上述标准对每条骑行记录进行分类标注,存入 ride_distance_mark.csv 文件中。具体格式如下:
*骑行ID**开始时间**骑行距离(km)**距离分类*
*1001*2025-01-01 08:30:003.5中途

将 ride_distance_mark.csv 打开后直接截图(不用下拉)复制粘贴至【提交结果.docx】中对应的任务序号下。
2. 子任务二:时段热度标注
使用 Python 编写脚本,基于骑行开始时间,对每个时段进行热度标注。具体的分类要求如下:
(1)高峰时段:工作日的7:00-9:00和17:00-19:00;
(2)平峰时段:工作日的9:00-17:00和19:00-22:00;
(3)低峰时段:工作日的22:00-次日7:00以及周末全天。
在数据集中新增一列"时段热度",根据上述标准对每条骑行记录进行时段标注,存入 time_period_mark.csv 文件中。具体格式如下:

*骑行ID**开始时间**周末标记**时段热度*
*1001*2025-01-01 08:30:000高峰时段

将 time_period_mark.csv 打开后直接截图(不用下拉)复制粘贴至【提交结果.docx】中对应的任务序号下。

(三)任务三:数据统计

  1. 子任务一:HDFS 文件操作
    本任务需要使用 Hadoop、HDFS 命令,已安装 Hadoop 及需要配置前置环境,具体要求如下:
    (1)在 HDFS 目录下新建目录 /bike_data,将新建目录的完整命令粘贴至【提交结果.docx】中对应的任务序号下;
    (2)修改权限,赋予目录 /bike_data 最高 777 权限,将修改目录权限的完整命令粘贴至【提交结果.docx】对应的任务序号下;
    (3)下载 HDFS 新建目录 /bike_data,到本地容器 master 指定目录 /tmp下,将完整命令粘贴至【提交结果.docx】中对应的任务序号下。
    2.子任务二:计算输入文件中的单词数
    本任务需要使用 Hadoop 默认提供的 wordcount 示例来完成单词数统计任务,具体要求如下:
    (1)在 HDFS 上创建 /user/hadoop/input 目录;
    (2)在 master 节点将 /var/log/dmesg 文件上传到 HDFS 的 /user/hadoop/input 目录下;
    (3)使用 Hadoop 中提供的 wordcount 示例对 HDFS 上的 dmesg 文件进行单词统计,并将统计结果存储到 HDFS 的 /user/hadoop/output 目录下;
    (4)查看 HDFS 中的 /user/hadoop/output 单词数统计结果并将结果前十行截图粘贴至【提交结果.docx】中对应的任务序号下。
    3.子任务三:计算区域平均骑行时长
    本任务需要使用 MapReduce 框架计算每个区域的平均骑行时长,具体要求如下:
    (1)编写 MapReduce 程序,计算每个区域(根据起始位置划分)的平均骑行时长。输入数据格式为:
    起始位置,结束位置,骑行时长(分钟)
    朝阳区望京,朝阳区大屯,15
    海淀区中关村,海淀区五道口,22

    (2)Map 函数需要从输入数据中提取起始位置的区域名称和骑行时长,Reduce 函数需要计算每个区域的平均骑行时长;
    (3)将计算结果输出到 HDFS 的 /user/hadoop/avg_duration 目录下,输出格式为:
    区域名称 平均骑行时长(分钟)
    朝阳区 18.5
    海淀区 20.3

    (4)将程序运行结果截图粘贴至【提交结果.docx】中对应的任务序号下。

四、模块三:业务分析与可视化

(一)任务一:数据分析与可视化

1.子任务一:数据分析
数据分析是理解共享单车使用模式的重要手段,可以揭示用户偏好、使用高峰和运营效率。在这个任务中,我们将运用 Python 对共享单车使用数据进行深入分析,以获取关键洞察。参赛者需要运用 Python 的数据处理和分析库,如 Pandas 来完成以下任务:
(1)按开始时间统计每个小时的平均骑行量,进行倒序排序展示前三个高峰时段;
(2)计算不同天气状况下的平均骑行时长和平均骑行距离;
(3)分析工作日和周末的骑行模式差异,计算两者的平均骑行量、平均骑行时长和平均骑行距离;
(4)统计每个区域的起始和结束骑行次数,识别最热门的上车区域和下车区域;
(5)分析温度对骑行量的影响,计算不同温度区间(0-10℃、10-20℃、20-30℃、30℃以上)的平均骑行量;
将该 5 个统计结果在 IDE 的控制台中打印并分别截图复制粘贴至【提交结果.docx】中对应的任务序号下。
2.子任务二:数据可视化
在这个任务中,参赛者将使用 pyecharts 库来创建直观、互动的图表,以展示共享单车使用的关键模式和趋势。具体要求如下:
(1)创建时间热力图展示一周内各时段的骑行量分布,横轴为星期(周一至周日),纵轴为小时(0-23时),颜色深浅表示骑行量的多少;
(2)使用折线图展示一天24小时内的骑行量变化趋势,图中需要包含工作日和周末两条折线,以便对比不同类型日期的使用模式差异;
(3)制作区域流向图,展示不同区域之间的骑行流量,使用箭头的粗细表示流量大小,颜色表示平均骑行时长;
(4)创建散点图分析气温与骑行量的关系,横轴为温度,纵轴为日骑行量,每个点的大小表示平均骑行时长,颜色表示天气状况;
将该 4 个可视化图表分别截图复制粘贴至【提交结果.docx】中对应的任务序号下。

(二)任务二:业务分析

在共享单车运营中,准确理解用户需求、使用模式和运营效率至关重要。通过分析骑行数据,可以优化运营策略,提升服务质量。本任务中使用 Python 对骑行数据进行深入的业务分析,目的是识别关键运营指标,并提出基于数据的改进建议。
使用提供的骑行数据集,计算以下指标:
(1)单车周转率
日均使用次数 = 单车每日骑行订单数的平均值
日均使用时长 = 单车每日总骑行时长的平均值(小时)
计算周转率 = 日均使用时长 / 24小时,结果以百分比表示
需分别计算工作日和周末的周转率
(2)区域供需分析
区域供需平衡指数计算方法:
o计算每个区域的供给量 = 该区域结束骑行的单车数量
o计算每个区域的需求量 = 该区域开始骑行的单车数量
o供需平衡指数 = (供给量 - 需求量) / 需求量 × 100%
o指数为正表示供大于求,为负表示供不应求
o理想范围应在 ±20% 之内
(3)高峰期分析
对于每个区域在工作日早晚高峰时段(7:00-9:00,17:00-19:00):
o计算平均小时需求量 = 该时段内每小时发起的骑行订单数量
o计算实际供给量 = 该时段内区域内可用单车数量
o计算供需比 = 实际供给量 / 平均小时需求量
o供需比低于1.2的区域被认定为供给不足
o供需比高于2.0的区域被认定为供给过剩
根据上述分析结果,请撰写一份简短的分析报告(300字以内),内容应包括:
当前运营情况的主要发现
存在的关键问题和挑战
至少三条具体的优化建议,并说明预期效果
将分析报告内容复制粘贴至【提交结果.docx】中对应的任务序号下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺仔Sec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值