文章目录
- 大数据离线模块
-
- 一、增量抽取
- 二、数据清洗
- 三、指标计算
-
- 1、根据dwd层表统计在两天内连续下单并且下单金额保持增长的用户,存入MySQL数据库shtd_result的usercontinueorder表(表结构如下)中,然后在Linux的MySQL命令行中根据订单总数、订单总金额、客户主键均为降序排序,查询出前5条,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 2、根据dws层表来计算每个地区2020年订单金额前3省份,依次存入MySQL数据库shtd_result的regiontopthree表中(表结构如下),然后在Linux的MySQL命令行中根据地区表主键升序排序,查询出前5条,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 3、编写Scala代码,使用Spark根据hudi_gy_dwd层的fact_change_record表关联dim_machine表统计每个车间中所有设备运行时长(即设备状态为“运行”)的中位数在哪个设备(为偶数时,两条数据原样保留输出),若某个设备运行状态当前未结束(即change_end_time值为空)则该状态不参与计算,计算结果存入ClickHouse数据库shtd_industry的machine_running_median表中(表结构如下),然后在Linux的ClickHouse命令行中根据所属车间、设备id均为降序排序,查询出前5条数据,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 4、编写Scala代码,使用Spark根据dwd层的fact_change_record表展示每一个设备最近第二次的状态(倒数第二次),时间字段选用change_start_time,如果设备仅有一种状态,返回该状态(一个设备不会同时拥有两种状态),存入MySQL数据库shtd_industry的recent_state表中(表结构如下),然后在Linux的MySQL命令行中根据设备id降序排序,查询出前5条,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 5、请根据dwd_ds_hudi层的相关表,计算2020年销售量前10的商品,销售额前10的商品,存入ClickHouse数据库shtd_result的topten表中(表结构如下),然后在Linux的ClickHouse命令行中根据排名升序排序,查询出前5条,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 6、根据dwd层的数据,请计算连续两天下单的用户与已下单用户的占比,将结果存入MySQL数据库shtd_result的userrepurchasedrate表中(表结构如下),然后在Linux的MySQL命令行中查询结果数据,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 7、根据dwd层的数据,请计算每个省份累计订单量(订单信息表一条算一个记录),然后根据每个省份订单量从高到低排列,将结果打印到控制台(使用spark中的show算子,同时需要显示列名),将执行结果复制并粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 8、编写scala代码,使用Spark根据dws层的machine_produce_per_avgtime表,获取各设备生产耗时最长的两个产品的用时,将计算结果存入MySQL数据库shtd_industry的machine_produce_timetop2表中(表结构如下),然后在Linux的MySQL命令行中根据设备id降序排序,查询出前2条,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 9、编写scala代码,使用Spark根据hudi_gy_dwd层的fact_machine_data表统计出每日每台设备,状态为“运行”的时长(若运行无结束时间,则需根据时间判断这个设备的运行状态的下一个状态是哪条数据,将下一个状态的数据的时间置为这个设备运行状态的结束时间,如果设备数据的运行状态不存在下一个状态,则该设备这个阶段数据的运行状态不参与计算,即该设备的这个阶段数据的运行状态时长按0计算),将结果数据写入hudi_gy_dws层的表machine_data_total_time中,分区字段为etldate且值与fact_machine_data表该值相等,etldate作为preCombineField,machine_id、machine_record_date和total_time作为联合primaryKey。然后使用spark-sql的cli根据machine_id降序和machine_record_date升序排序查询前5条数据,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下;
- 10、编写scala代码,使用Spark根据hudi_gy_dws层表machine_data_total_time,计算每日运行时长前三的设备(若存在运行时长相同的数据时应全部输出,例如有两条并列第二,则第三名次不变,总共输出四条数据)。将计算结果写入ClickHouse数据库shtd_industry的machine_data_total_time_top3表中(表结构如下),然后在Linux的ClickHouse命令行中根据查询所有数据,将SQL语句复制粘贴至客户端桌面【Release\任务B提交结果.docx】中对应的任务序号下,将执行结果截图
- 11、根据 dwd 层的 fact_change_record 表,计算 2021 年 10 月 12 日这天(change_start_time 字段的日期)状态为“待机”的数据,计算当天每小时新增的“待机”状态时长与当天“待机”状态总时长,将结果存入 MySQL数据库 shtd_industry 的 accumulate_standby 表中(表结构如下),然后在 Linux 的 MySQL 的命令行根据 start_hour 降序查询 accumulate_standby表前 3 条数据,将 SQL 语句复制粘贴至客户端桌面【Release\重命名为工位号\模块 B 提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release\重命名为工位号\模块 B 提交结果.docx】中对应的任务序号下:
- 12、根据 dwd 层的 fact_change_record 表,计算 2021 年 10 月 13 日这天(change_start_time 字段的日期)状态为“运行”的数据,以 3 小时为一个计算窗口,做滑动窗口计算,滑动步长为 1 小时,窗口不满 3 小时不触发计算(即从凌晨 3 点开始触发计算,第一条数据的 state_start_time 为2021-10-13_02,以有数据的 3 个小时为一个时间窗口),将计算结果存入MySQL 数据库 shtd_industry 的 slide_window_runnning 表中,然后在 Linux的 MySQL 命令行中按照 state_start_time 字段所带的小时信息进行升序排序查询 slide_window_runnning 表前 3 条数据,将核心业务代码中的开窗相关代码与 MySQL 查询结果分别截图粘贴至客户端桌面【Release\重命名为工位号\模块 B 提交结果.docx】中对应的任务序号下。
- 四、写入数据
- 五、任务调度
大数据离线模块
相同类型的题,只拿一道举例子
一、增量抽取
子任务一:数据抽取
编写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库中部分表没有数据,正常抽取即可)