2023年全国职业院校技能大赛
赛题第09套
赛项名称: 大数据应用开发
英文名称: Big Data Application Development
赛项组别: 高等职业教育组
赛项编号: GZ033
背景描述
工业互联网是工业全要素、全产业链、全价值链的全面连接,是人、机、物、工厂互联互通的新型工业生产制造服务体系,是互联网从消费领域向生产领域、从虚拟经济向实体经济拓展的核心载体,是建设现代化经济体系、实现高质量发展和塑造全球产业竞争力的关键支撑,工业大数据则是工业互联网实现工业要素互联之后的核心价值创造者。随着大数据行业的发展,工业数据收集呈现时间维度不断延长、数据范围不断扩大、数据粒度不断细化的趋势。以上三个维度的变化使得企业所积累的数据量以加速度的方式在增加,最终构成了工业大数据的集合。
为完成工业大数据分析工作,你所在的小组将应用大数据技术,以Scala作为整个项目的基础开发语言,基于大数据平台综合利用
Hive、Spark、Flink、Vue.js等技术,对数据进行处理、分析及可视化呈现,你们作为该小组的技术人员,请按照下面任务完成本次工作。
任务A:大数据平台搭建(容器环境)(15分)
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:宿主机及各容器节点可通过Asbru工具或SSH客户端进行SSH访问。 MySQL已在容器的Master中安装完毕,用户名/密码为root/123456 |
子任务一:Hadoop 完全分布式安装配置
本任务需要使用root用户完成相关配置,安装Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:
- 从宿主机/opt目录下将文件hadoop-2.7.7.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】中对应的任务序号下。
子任务二:HBase分布式安装配置
本任务需要使用root用户完成相关配置,安装HBase需要配置Hadoop和ZooKeeper等前置环境。命令中要求使用绝对路径,具体要求如下:
- 从宿主机/opt目录下将文件apache-zookeeper-3.5.7-bin.tar.gz、hbase-2.2.3-bin.tar.gz复制到容器Master中的/opt/software路径中(若路径不存在,则需新建),将ZooKeeper、HBase安装包解压到/opt/module目录下,将HBase的解压命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
- 完成zookeeper相关部署,用scp命令并使用绝对路径从容器master复制HBase解压后的包分发至slave1、slave2中,并修改相关配置,配置好环境变量,在容器Master节点中运行命令hbase version,将全部复制命令复制并将hbase version命令的结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
- 启动HBase后在三个节点分别使用jps命令查看,并将结果分别截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;正常启动后在hbase shell中查看命名空间,将查看命名空间的结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下。
子任务三:Hive安装配置
本任务需要使用root用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:
- 从宿主机/opt目录下将文件apache-hive-2.3.4-bin.tar.gz、mysql-connector-java-5.1.47.jar复制到容器master中的/opt/software路径中(若路径不存在,则需新建),将容器master节点Hive安装包解压到/opt/module目录下,将命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
- 设置Hive环境变量,并使环境变量生效,执行命令hive --version并将命令与结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
- 完成相关配置并添加所依赖包,将MySQL数据库作为Hive元数据库。初始化Hive元数据,并通过schematool相关命令执行初始化,将初始化结果截图(范围为命令执行结束的最后10行)粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下。
任务B:离线数据处理(25分)
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问; 主节点MySQL数据库用户名/密码:root/123456(已配置远程连接); Hive的配置文件位于/opt/apache-hive-2.3.4-bin/conf/ Spark任务在Yarn上用Client运行,方便观察日志。 |
子任务一:数据抽取
编写Scala代码,使用Spark将MySQL库中表EnvironmentData,ChangeRecord,BaseMachine,MachineData,ProduceRecord全量抽取到Hive的ods库中对应表environmentdata,changerecord,basemachine, machinedata, producerecord中。
- 抽取MySQL的shtd_industry库中EnvironmentData表的全量数据进入Hive的ods库中表environmentdata,字段排序、类型不变,同时添加静态分区,分区字段为etldate,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.environmentdata命令,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 抽取MySQL的shtd_industry库中ChangeRecord表的全量数据进入Hive的ods库中表changerecord,字段排序、类型不变,同时添加静态分区,分区字段为etldate,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.changerecord命令,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 抽取MySQL的shtd_industry库中BaseMachine表的全量数据进入Hive的ods库中表basemachine,字段排序、类型不变,同时添加静态分区,分区字段为etldate,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.basemachine命令,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 抽取MySQL的shtd_industry库中ProduceRecord表的全量数据进入Hive的ods库中表producerecord,剔除ProducePrgCode字段,其余字段排序、类型不变,同时添加静态分区,分区字段为etldate,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.producerecord命令,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 抽取MySQL的shtd_industry库中MachineData表的全量数据进入Hive的ods库中表machinedata,字段排序、类型不变,同时添加静态分区,分区字段为etldate,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hive cli执行show partitions ods.machinedata命令,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下。
子任务二:数据清洗
编写Hive SQL代码,将ods库中相应表数据全量抽取到Hive的dwd库中对应表中。表中有涉及到timestamp类型的,均要求按照yyyy-MM-dd HH:mm:ss,不记录毫秒数,若原数据中只有年月日,则在时分秒的位置添加00:00:00,添加之后使其符合yyyy-MM-dd HH:mm:ss。
- 抽取ods库中environmentdata的全量数据进入Hive的dwd库中表fact_environment_data,分区字段为etldate且值与ods库的相对应表该值相等,并添加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按照envoid降序排序,查询前5条数据,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 抽取ods库中changerecord的全量数据进入Hive的dwd库中表fact_change_record,抽取数据之前需要对数据根据changeid和changemachineid进行联合去重处理,分区字段为etldate且值与ods库的相对应表该值相等,并添加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按照change_machine_id、change_id降序排序,查询前1条数据,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 抽取ods库中basemachine的全量数据进入Hive的dwd库中表dim_machine,抽取数据之前需要对数据根据basemachineid进行去重处理。分区字段为etldate且值与ods库的相对应表该值相等,并添加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按照base_machine_id升序排序,查询dim_machine前2条数据,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 抽取ods库中producerecord的全量数据进入Hive的dwd库中表fact_produce_record,分区字段为etldate且值与ods库的相对应表该值相等,并添加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按照produce_machine_id、produce_record_id升序排序,查询fact_produce_record前2条数据,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 抽取ods库中machinedata的全量数据进入Hive的dwd库中表fact_machine_data。分区字段为etldate且值与ods库的相对应表该值相等,并添加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按照machine_id、machine_record_id降序排序,查询前1条数据,将结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下。
子任务三:指标计算
- 本任务基于以下2、3、4小题完成,使用DolphinScheduler完成第2、3、4题任务代码的调度。工作流要求,使用shell输出“开始”作为工作流的第一个job(job1),2、3、4题任务为串行任务且它们依赖job1的完成(命名为job2、job3、job4),job2、job3、job4完成之后使用shell输出“结束”作为工作流的最后一个job(endjob),endjob依赖job2、job3、job4,并将最终任务调度完成后的工作流截图,将截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 编写scala代码,使用Spark根据dwd层的fact_produce_record表,基于全量历史增加设备生产一个产品的平均耗时字段(produce_per_avgtime),produce_code_end_time值为1900-01-01 00:00:00的数据为脏数据,需要剔除,并以produce_record_id和ProduceMachineID为联合主键进行去重(注:fact_produce_record表中,一条数据代表加工一个产品,produce_code_start_time字段为开始加工时间,produce_code_end_time字段为完成加工时间),将得到的数据提取下表所需字段然后写入dws层的表machine_produce_per_avgtime中,然后使用hive cli根据设备id和生产记录id降序排序查询前3条数据,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
dws.machine_produce_per_avgtime:
字段 | 类型 | 中文含义 | 备注 |
produce_record_id | int | 生产记录id | 每生产一件产品产生一条数据 |
produce_machine_id | int | 设备id | |
producetime | int | 该产品耗时 | |
produce_per_avgtime | int | 设备生产一个产品平均耗时 | 单位:秒 |
- 编写scala代码,使用Spark根据dws层的machine_produce_per_avgtime表,获取各设备生产耗时最长的两个产品的用时,将计算结果存入MySQL数据库shtd_industry的machine_produce_timetop2表中(表结构如下),然后在Linux的MySQL命令行中根据设备id降序排序,查询出前2条,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
字段 | 类型 | 中文含义 | 备注 |
machine_id | int | 设备id | |
first_time | int | 耗时最长 | |
second_time | int | 耗时次长 |
- 编写Hive SQL代码,根据dwd层的fact_environment_data表,统计检测设备(BaseID)每月的平均湿度(Humidity),然后将每个设备的每月平均湿度与厂内所有检测设备每月检测结果的平均湿度做比较(结果值为:高/低/相同)存入MySQL数据库shtd_industry的machine_humidityAVG_compare表中(表结构如下),然后在Linux的MySQL命令行中根据检测设备ID降序排序,查询出前5条,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
字段 | 类型 | 中文含义 | 备注 |
base_id | int | 检测设备ID | |
machine_avg | varchar | 单设备检测平均值 | |
factory_avg | varchar | 厂内所有设备平均值 | |
comparison | varchar | 比较结果 | 高/低/相同 |
env_date_year | varchar | 检测年份 | 如:2021 |
env_date_month | varchar | 检测月份 | 如:12 |
任务C:数据挖掘(10分)
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问; 主节点MySQL数据库用户名/密码:root/123456(已配置远程连接); Hive的配置文件位于/opt/apache-hive-2.3.4-bin/conf/ Spark任务在Yarn上用Client运行,方便观察日志。 该任务均使用Scala编写,利用Spark相关库完成。 |
子任务一:特征工程
- 根据dwd库中fact_machine_data表(或MySQL的shtd_industry库中MachineData表),根据以下要求转换:获取最大分区(MySQL不用考虑)的数据后,首先解析列machine_record_data(MySQL中为MachineRecordData)的数据(数据格式为xml,采用dom4j解析,解析demo在客户端/home/ubuntu/Documents目录下),并获取每条数据的主轴转速,主轴倍率,主轴负载,进给倍率,进给速度,PMC程序号,循环时间,运行时间,有效轴数,总加工个数,已使用内存,未使用内存,可用程序量,注册程序量等相关的值(若该条数据没有相关值,则按下表设置默认值),同时转换machine_record_state字段的值,若值为报警,则填写1,否则填写0,以下为表结构,将数据保存在dwd.fact_machine_learning_data,使用hive cli按照machine_record_id升序排序,查询dwd.fact_machine_learning_data前1条数据,将结果截图粘贴至客户端桌面【Release\任务C提交结果.docx】中对应的任务序号下。
dwd.fact_machine_learning_data表结构:
字段 | 类型 | 中文含义 | 备注 |
machine_record_id | int | 主键 | |
machine_id | double | 设备id | |
machine_record_state | double | 设备状态 | 默认0.0 |
machine_record_mainshaft_speed | double | 主轴转速 | 默认0.0 |
machine_record_mainshaft_multiplerate | double | 主轴倍率 | 默认0.0 |
machine_record_mainshaft_load | double | 主轴负载 | 默认0.0 |
machine_record_feed_speed | double | 进给倍率 | 默认0.0 |
machine_record_feed_multiplerate | double | 进给速度 | 默认0.0 |
machine_record_pmc_code | double | PMC程序号 | 默认0.0 |
machine_record_circle_time | double | 循环时间 | 默认0.0 |
machine_record_run_time | double | 运行时间 | 默认0.0 |
machine_record_effective_shaft | double | 有效轴数 | 默认0.0 |
machine_record_amount_process | double | 总加工个数 | 默认0.0 |
machine_record_use_memory | double | 已使用内存 | 默认0.0 |
machine_record_free_memory | double | 未使用内存 | 默认0.0 |
machine_record_amount_use_code | double | 可用程序量 | 默认0.0 |
machine_record_amount_free_code | double | 注册程序量 | 默认0.0 |
machine_record_date | timestamp | 记录日期 | |
dwd_insert_user | string | ||
dwd_insert_time | timestamp | ||
dwd_modify_user | string | ||
dwd_modify_time | timestamp |
子任务二:报警预测
- 根据子任务一的结果,建立随机森林(随机森林相关参数可自定义,不做限制),使用子任务一的结果训练随机森林模型,然后再将hive中dwd.fact_machine_learning_data_test(该表字段含义与dwd.fact_machine_learning_data表相同,machine_record_state列值为空,表结构自行查看)转成向量,预测其是否报警将结果输出到MySQL数据库shtd_industry的ml_result表中(表结构如下)。在Linux的MySQL命令行中查询出machine_record_id为1、8、20、28和36的5条数据,将SQL语句与执行结果截图粘贴至客户端桌面【Release\任务C提交结果.docx】中对应的任务序号下。
ml_result表结构:
字段 | 类型 | 中文含义 | 备注 |
machine_record_id | int | 主键 | |
machine_record_state | double | 设备状态 | 报警为1,其他状态则为0 |
任务D:数据采集与实时计算(20分)
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问; Flink任务在Yarn上用per job模式(即Job分离模式,不采用Session模式),方便Yarn回收资源。 |
子任务一:实时数据采集
- 在主节点使用Flume采集/data_log目录下实时日志文件中的数据,将数据存入到Kafka的Topic中(Topic名称分别为ChangeRecord、ProduceRecord和EnvironmentData,分区数为4),将Flume采集ChangeRecord主题的配置截图粘贴至客户端桌面【Release\任务D提交结果.docx】中对应的任务序号下;
- 编写新的Flume配置文件,将数据备份到HDFS目录/user/test/flumebackup下,要求所有主题的数据使用同一个Flume配置文件完成,将Flume的配置截图粘贴至客户端桌面【Release\任务D提交结果.docx】中对应的任务序号下。
子任务二:使用Flink处理Kafka中的数据
编写Scala代码,使用Flink消费Kafka中的数据并进行相应的数据统计计算。
- 使用Flink消费Kafka中EnvironmentData主题的数据,监控各环境检测设备数据,当温度(Temperature字段)持续3分钟高于38度时记录为预警数据。将结果存入HBase中的gyflinkresult:EnvTemperatureMonitor,key值为“env_temperature_monitor”,rowkey“设备id-系统时间”(如:123-2023-01-01 12:06:06.001),将结果截图粘贴至客户端桌面【Release\任务D提交结果.docx】中对应的任务序号下,需要Flink启动运行6分钟以后再截图;
注:时间语义使用Processing Time。
中文内容及格式必须为示例所示内容。
同一设备3分钟只预警一次。
字段 | 类型 | 中文含义 |
rowkey | String | 设备id-系统时间(如:123-2023-01-01 12:06:06.001) |
machine_id | String | 设备id |
out_warning_time | String | 预警生成时间 预警信息生成时间格式:yyyy-MM-dd HH:mm:ss |
- 使用Flink消费Kafka中ChangeRecord主题的数据,统计每3分钟各设备状态为“预警”且未处理的数据总数,将结果存入MySQL数据库shtd_industry的threemin_warning_state_agg表中(追加写入,表结构如下)。请将任务启动命令复制粘贴至客户端桌面【Release\任务D提交结果.docx】中对应的任务序号下,启动且数据进入后按照设备id降序排序查询threemin_warning_state_agg表进行截图粘贴至客户端桌面【Release\任务D提交结果.docx】中对应的任务序号下,第一次截图后等待3分钟再次查询并截图粘贴至客户端桌面【Release\任务D提交结果.docx】中对应的任务序号下;
threemin_warning_state_agg表:
字段 | 类型 | 中文含义 |
change_machine_id | int | 设备id |
totalwarning | int | 未被处理预警总数 |
window_end_time | varchar | 窗口结束时间(yyyy-MM-dd HH:mm:ss) |
注:时间语义使用Processing Time。
- 使用Flink消费Kafka中ChangeRecord主题的数据,实时统计每个设备从其他状态转变为“运行”状态的总次数,将结果存入MySQL数据库shtd_industry的change_state_other_to_run_agg表中(表结构如下)。请将任务启动命令复制粘贴至客户端桌面【Release\任务D提交结果.docx】中对应的任务序号下,启动1分钟后根据change_machine_id降序查询change_state_other_to_run_agg表并截图粘贴至客户端桌面【Release\任务D提交结果.docx】中对应的任务序号下,启动2分钟后根据change_machine_id降序查询change_state_other_to_run_agg表并再次截图粘贴至客户端桌面【Release\任务D提交结果.docx】中对应的任务序号下。
注:时间语义使用Processing Time。
change_state_other_to_run_agg表:
字段 | 类型 | 中文含义 |
change_machine_id | int | 设备id |
last_machine_state | varchar | 上一状态。即触发本次统计的最近一次非运行状态 |
total_change_torun | int | 从其他状态转为运行的总次数 |
in_time | varchar | flink计算完成时间(yyyy-MM-dd HH:mm:ss) |
任务E:数据可视化(15分)
环境说明:
数据接口地址及接口描述详见各任务服务端说明。 注:所有数据排序按照接口返回数据顺序处理即可,不用特意排序。 |
子任务一:用多个饼状图展示设备每天各状态时间
编写Vue工程代码,根据接口,用多个饼状图展示OP170B该设备的每天各个状态的持续时长(秒)占比,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
子任务二:用柱状图展示每日各设备产量
编写Vue工程代码,根据接口,用柱状图展示每日各设备的产量,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
子任务三:用单轴散点图展示各设备加工每件产品所需时长
编写Vue工程代码,根据接口,用单轴散点图展示各设备加工每件产品所需时长(秒),同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
子任务四:用折线图展示PM2.5浓度变化
编写Vue工程代码,根据接口,用折线图展示PM2.5浓度变化,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
子任务五:用折柱混合图展示设备日均产量和所在车间日均产量
编写Vue工程代码,根据接口,用折柱混合图展示设备日均产量(四舍五入保留两位小数)和所在车间日均产量(四舍五入保留两位小数),其中柱状图展示各设备的日均产量,折线图展示该设备所在车间的日均产量,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release\任务E提交结果.docx】中对应的任务序号下。
任务F:综合分析(10分)
子任务一:Flink 任务出现很高的延迟,你会如何入手解决类似问题?
Flink 任务出现很高的延迟,你会如何入手解决类似问题,将内容编写至客户端桌面【Release\任务F提交结果.docx】中对应的任务序号下。
子任务二:请简述Spark的Job、Stage、Task,如何划分?
请简述你对Spark的Job、Stage、Task的理解,它们分别如何划分,将内容编写至客户端桌面【Release\任务F提交结果.docx】中对应的任务序号下。
子任务三:请根据可视化图表做以下分析。
如果你是工厂技术人员,通过可视化结果你将会对工厂设备优化、排班优化(不限于该角度,考生自行扩展分析角度)做出哪些建议,将内容编写至客户端桌面【Release\任务F提交结果.docx】中对应的任务序号下。