GZ033 大数据应用开发赛项正式赛卷-2023年全国职业院校技能大赛赛项正式赛卷.docx

上传人:李司机 文档编号:6495700 上传时间:2023-11-06 格式:DOCX 页数:24 大小:58.86KB
返回 下载 相关 举报
GZ033 大数据应用开发赛项正式赛卷-2023年全国职业院校技能大赛赛项正式赛卷.docx_第1页
第1页 / 共24页
GZ033 大数据应用开发赛项正式赛卷-2023年全国职业院校技能大赛赛项正式赛卷.docx_第2页
第2页 / 共24页
GZ033 大数据应用开发赛项正式赛卷-2023年全国职业院校技能大赛赛项正式赛卷.docx_第3页
第3页 / 共24页
GZ033 大数据应用开发赛项正式赛卷-2023年全国职业院校技能大赛赛项正式赛卷.docx_第4页
第4页 / 共24页
GZ033 大数据应用开发赛项正式赛卷-2023年全国职业院校技能大赛赛项正式赛卷.docx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《GZ033 大数据应用开发赛项正式赛卷-2023年全国职业院校技能大赛赛项正式赛卷.docx》由会员分享,可在线阅读,更多相关《GZ033 大数据应用开发赛项正式赛卷-2023年全国职业院校技能大赛赛项正式赛卷.docx(24页珍藏版)》请在三一办公上搜索。

1、2023年全国职业院校技能大赛赛题第02套赛项名称:大数据应用开发英又名称:BigDataAPPliCatiOnDeVeloPment赛项组别:高等职业教育组赛项编号:GZ033背景描述大数据时代背景下,电商经营模式发生很大改变。在传统运营模式中,缺乏数据积累,人们在做出一些决策行为过程中,更多是凭借个人经验和直觉,发展路径比较自我封闭。而大数据时代,为人们提供一种全新的思路,通过大量的数据分析得出的结果将更加现实和准确。商家可以对客户的消费行为信息数据进行收集和整理,比如消费者购买产品的花费、选择产品的渠道、偏好产品的类型、产品回购周期、购买产品的目的、消费者家庭背景、工作和生活环境、个人消

2、费观和价值观等。通过数据追踪,知道顾客从哪儿来,是看了某网站投放的广告还是通过朋友推荐链接,是新访客还是老用户,喜欢浏览什么产品,购物车有无商品,是否清空,还有每一笔交易记录,精准锁定一定年龄、收入、对产品有兴趣的顾客,对顾客进行分组、标签化,通过不同标签组合运用,获得不同目标群体,以此开展精准推送。因数据驱动的零售新时代已经到来,没有大数据,我们无法为消费者提供这些体验,为完成电商的大数据分析工作,你所在的小组将应用大数据技术,以SCala作为整个项目的基础开发语言,基于大数据平台综合利用Hudi.Spark.FlinkVue.js等技术,对数据进行处理、分析及可视化呈现,你们作为该小组的技

3、术人员,请按照下面任务完成本次工作。任务A:大数据平台搭建(容器环境)(15分)环境说明:服务端登录地址详见各任务服务端说明。补充说明:宿主机可通过ASbrU工具或SSH客户端进行SSH访问;相关软件安装包在宿主机的/opt目录下,请选择对应的安装包进行安装,用不到的可忽略;所有任务中应用命令必须采用绝对路径;进入Master节点的方式为dockerexec-itmasterbinbash进入SIaVel节点的方式为dockerexec-itslavelbinbash进入Slave2节点的方式为dockerexec-itslave2binbash三个容器节点的root密码均为123456子任务

4、一:Hadoop完全分布式安装配置本任务需要使用root用户完成相关配置,安装Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:1、从宿主机/opt目录下将文件hadoop-3.1.3.tar.gz、jdk-8u212-linu-64.tar.gz复制到容器Master中的optsoftware路径中(若路径不存在,则需新建),将Master节点JDK安装包解压到optmodule路径中(若路径不存在,则需新建),将JDK解压命令复制并粘贴至客户端桌面【Release、任务A提交结果.docx】中对应的任务序号下;2、修改容器中etcprofile文件,设置JDK环境变量并使

5、其生效,配置完毕后在Master节点分别执行“java-version和javac”命令,将命令行执行结果分别截图并粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;3、请完成host相关配置,将三个节点分别命名为master、slave1slave2,并做免密登录,用Scp命令并使用绝对路径从Master复制JDK解压后的安装文件到slavelslave2节点(若路径不存在,则需新建),并配置SlaVe1、slave2相关环境变量,将全部scp复制JDK的命令复制并粘贴至客户端桌面【Release任务A提交结果.docx中对应的任务序号下;4、在Master将Ha

6、doop解压到optmodule(若路径不存在,则需新建)目录下,并将解压包分发至SlaVe1、SlaVe2中,其中InaSter、slaveKSlaVe2节点均作为datanode,配置好相关环境,初始化HadoOP环境namenode,将初始化命令及初始化结果截图(截取初始化结果日志最后20行即可)粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;5、启动HadOOP集群(包括hdfs和yarn),使用jps命令查看MaSter节点与slavel节点的Java进程,将jps命令与结果截图粘贴至客户端桌面【Release任务A提交结果.docx中对应的任务序号下。

7、子任务二:Flume安装配置本任务需要使用root用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:1、从宿主机/opt目录下将文件apache-flume-1.9.O-bin.tar.gz复制到容器MaSter中的optsoftware路径中(若路径不存在,则需新建),将MaSter节点FlUme安装包解压到optmodule目录下,将解压命令复制并粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;2、完善相关配置,设置FIUIne环境变量,并使环境变量生效,执行命令flume-ngversion并将命令与结果截图粘贴至客户端桌面【Releas

8、e任务A提交结果.docx】中对应的任务序号下;3、启动FIUnle传输HadOoP日志(namenode或datanode日志),查看HDFS中tmpflume目录下生成的内容,将查看命令及结果(至少5条结果)截图粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下。子任务三:FlinkonYarn安装配置本任务需要使用root用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:1、从宿主机/opt目录下将文件flink-1.14.0-bin-scala_2.12.tgz复制到容器MaSter中的optsoftware(若路径不存在,则需新建)中,将

9、FIink包解压到路径optmodule中(若路径不存在,则需新建),将完整解压命令复制粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;2、修改容器中etcprofile文件,设置Flink环境变量并使环境变量生效。在容器中/opt目录下运行命令flink-version,将命令与结果截图粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;3、开启HadOOP集群,在yarn上以perjob模式(即JOb分离模式,不采用SeSSiOn模式)运行$FLINKJIOME/examples/batch/WordCount.jar,将运行结果最后

10、10行截图粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下。示例:flinkrun-myarn-cluster-p2-yjm2G-ytm2G$FLINK_IIOME/examples/batch/WordCount.jar任务B:离线数据处理(25分)环境说明:服务端登录地址详见各任务服务端说明。补充说明:各节点可通过ASbrU工具或SSH客户端进行SSH访问;主节点MySQL数据库用户名/密码:root123456(已配置远程连接);Spark任务在Yarn上用Client运行,方便观察日志。若HUdi中无数据,正常抽取提示:在本卷中所示的Ods、dwd层均为hu

11、di中OdS_ds_hudi、dwd_ds_hudi,不操作Hive中的数据子任务一:数据抽取编写Scala代码,使用Spark将MySQL的shtd_store库中表USeJinf0、sku_infobase-provincebase_regionOrdeJinf0、order_detail的数据增量抽取到Hudi的ods_dSJlUdi库(路径为/user/hive/warehouse/ods_ds_hudi.db)的user_info、sku_info、base_provincebase-regionOrdeJinf0、order_detail中。(若ods_ds_hudi库中部分表没有

12、数据,正常抽取即可)1、抽取ShtCLStOre库中USeJinfO的增量数据进入Hudi的OdS_ds_hudi库中表USejinf0。根据ods_ds_hudi.user_info表中operate_time或create_time作为增量字段(即MySQL中每条数据取这两个时间中较大的那个时间作为增量字段去和ods_ds_lWdi里的这两个字段中较大的时间进行比较),只将新增的数据抽入,字段名称、类型不变,同时添加分区,若operate_time为空,则用create_time填充,分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMd

13、d)。id作为PJrinIaryKey,oPerate_time作为PreCOmbineField。使用spark-shell执行showpartitionsods_ds_hudi.useJinfO命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;2、抽取shtd_store库中sku_info的增量数据进入Hudi的OdS_ds_hudi库中表SkU_info。根据OdS_ds_hudi.sku_info表中create_time作为增量字段,只将新增的数据抽入,字段名称、类型不变,同时添加分区,分区字段为etl_date,类型为String,且值

14、为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。id作为primaryKey,create_time作为PreCOmbineFiel.d。使用spark-shell执行showpartitionsods_ds_hudi.sku_info命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;3、抽取Shtd_store库中base_province的增量数据进入HUdi的OdS_ds_hudi库中表base_provinceo根据ods_ds_hudi.base_province表中id作为增量字段,只将新增的数据抽入,字段名称、类型不变并添加

15、字段CreateIinIe取当前时间,同时添加分区,分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)Oid作为primaryKey,create_time作为preCombineFieldo使用spark-shell执行showpartitionsods_ds_hudi.base_province命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;4、抽取shtd_store库中base_region的增量数据进入HUdi的ods_ds_hudi库中表base_rcgion。根据ods_ds

16、_hudi.basjregion表中id作为增量字段,只将新增的数据抽入,字段名称、类型不变并添加字段Create_time取当前时间,同时添加分区,分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。id作为PrimaryKey,create_time作为PreCombineField。使用spark-shell执行showpartitionsods_ds_hudi.base_region命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx中对应的任务序号下;5、抽取shtd_store库中order_info的

17、增量数据进入Hudi的ods_ds_hudi库中表order_info,根据ods_ds_hudi.order_info表中operate_time或create_time作为增量字段(即MySQL中每条数据取这两个时间中较大的那个时间作为增量字段去和ods_ds_hudi里的这两个字段中较大的时间进行比较),只将新增的数据抽入,字段名称、类型不变,同时添加分区,分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。id作为primaryKey,operate_time作为PreCombineField。使用spark-shell执行s

18、howpartitionsods_ds_hudi.order_info命令,将结果截图粘贴至客户端桌面ReleaseX任务B提交结果.docx】中对应的任务序号下;6、抽取shtd_store库中order_detail的增量数据进入Hudi的ods_ds_hudi库中表Ordejdetail,根据ods_ds_hudi.order_detail表中create_time作为增量字段,只将新增的数据抽入,字段名称、类型不变,同时添加分区,分区字段为etl_date,类型为StrirIg,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。id作为primaryKey,create_

19、time作为PreCombineField。使用spark-shell执行showpartitionsods_ds_hudi.order_detail命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下。子任务二:数据清洗编写Scala代码,使用Spark将OdS_ds_hudi库中相应表数据全量抽取到Hudi的dwd_ds_hudi库(路径为路径为userhiveWarehoUSe/dwd_ds_hudi.db)中对应表中表中有涉及到timestamp类型的,均要求按照yyyy-MM-ddH1I:mm:ss,不记录毫秒数,若原数据中只有年月日,则在时分

20、秒的位置添加00:00:00,添加之后使其符合yyyy-MM-CIclHH:mm:SSO(若dwd_ds_hudi库中部分表没有数据,正常抽取即可)1、抽取OdS_ds_hudi库中USejinfO表中昨天的分区(子任务一生成的分区)数据,并结合dim_user_info最新分区现有的数据,根据id合并数据到dwd_ds_hudi库中dim_user_info的分区表(合并是指对dwd_ds_hudi层数据进行插入或修改,需修改的数据以id为合并字段,根据OPerat排序取最新的一条),分区字段为etl_date且值与ods_ds_hudi库的相对应表该值相等,并添加dwd_insert_us

21、erxdwd_insert_timedwd_modify_userdwd_modify_time四列,其中dwd_insert_userdwd_modify_user均填写“userl。若该条记录第一次进入数仓dwd_ds_hudi层则dwd_insert_timedwd_modify_tinie均存当前操作时间,并进行数据类型转换。若该数据在进入dwd_ds_hudi层时发生了合并修改,则dwd_insert_time时间不变,dwd_modify_time存当前操作时间,其余列存最新的值。id作为primaryKey,operate_time作为PreCombineField。使用spar

22、k-shell执行showpartitionsdwd_ds_hudi.dim_user_info命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;2、抽取ods_ds_hudi库sku_info表中昨天的分区(子任务一生成的分区)数据,并结合dim_sku_info最新分区现有的数据,根据id合并数据到dwd_ds_hudi库中dim_sku_info的分区表(合并是指对dwdds_hudi层数据进行插入或修改,需修改的数据以id为合并字段,根据create_time排序取最新的一条),分区字段为etl_date且值与OdS_ds_hudi库的相对应

23、表该值相等,并添加dwd_insert_userdwd_insert_timedwd_modify_userdwd_modify_time四列,其中dwd_insert_userdwd_modify_user均填写“userl。若该条数据第一次进入数仓dwd_ds_hudi层则dwd_insert_timedwd_modify_tiine均填写当前操作时间,并进行数据类型转换。若该数据在进入dwd_ds_hudi层时发生了合并修改,则dwd_insert_time时间不变,dwd_modify_time存当前操作时间,其余列存最新的值。id作为primaryKey,dwd_modify_tim

24、e作为PreCombineField。使用spark-shell查询表dim_sku_info的字段id、SkU_desc、dwd_insert_userdwd_modify_timeetl.date,条件为最新分区的数据,id大于等于15且小于等于20,并且按照id升序排序,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;3、抽取OdSdS_hudi库base_province表中昨天的分区(子任务一生成的分区)数据,并结合dwd_ds_hudi.dim_PrOVinCe最新分区现有的数据,根据id合并数据到dwd_ds_hudi库中dim_provi

25、nce的分区表(合并是指对dwd_ds_hudi层数据进行插入或修改,需修改的数据以id为合并字段,根据create_time排序取最新的一条),分区字段为etl_date且值与OdS_ds_hudi库的相对应表该值相等,并添加dwd_insert_userdwd_insert_timedwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填写“userl若该条数据第一次进入数仓dwdds_hudi层则dwd_insert_timedwd_modify_time均填写当前操作时间,并进行数据类型转换。若该数据在进

26、入dwd_ds_hudi层时发生了合并修改,则dwd_insert_time时间不变,dwd_modify_time存当前操作时间,其余列存最新的值。id作为primaryKey,dwd_modify_time作为preCombineFie1do使用spark-shell在表dwd_ds_hudi.dim_province最新分区中,查询该分区中数据的条数,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;4、抽取OdS_ds_hudi库base_region表中昨天的分区(子任务一生成的分区)数据,并结合dwd_ds_hudi.dimjegion最新分区

27、现有的数据,根据id合并数据到dwd_ds_hudi库中dim_region的分区表(合并是指对dwd_ds_hudi层数据进行插入或修改,需修改的数据以id为合并字段,根据CreateIinIe排序取最新的一条),分区字段为etl_date且值与OdS_ds_hudi库的相对应表该值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填写“userl若该条数据第一次进入数仓dwdds_hudi层则dwd_insert_timedwd_

28、modify_time均填写当前操作时间,并进行数据类型转换。若该数据在进入dwd_ds_hudi层时发生了合并修改,则dwd_insert_time时间不变,dwd_modify_time存当前操作时间,其余列存最新的值。id作为primaryKey,dwd_modify_time作为preCombineFie1do使用spark-shell在表dwd_ds_hudi.dim_region最新分区中,查询该分区中数据的条数,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;5、将ods_ds_hudi库中order_info表昨天的分区(子任务一生成的分

29、区)数据抽取到dwd_ds_hudi库中fact_order_info的动态分区表,分区字段为etl_date,类型为String,取create_time值并将格式转换为yyyyMMdd,同时若operate_time为空,则用create_time填充,并添加dwd_insert_userdwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_userdwd_modify_user均填写auserl,dwd_insert_timedwd_modify_time均填写当前操作时间,并进行数据类型转换。id作为primary

30、Key,operate_time作为preCombineFie1do使用spark-shell执行showpartitionsdwd_ds_hudi.fact_order_info命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;6、将OdS_ds_hudi库中OrdeJdeta11表昨天的分区(子任务一中生成的分区)数据抽取到dwd_ds_hudi库中fact_order_detai1的动态分区表,分区字段为etl_date,类型为String,取create_time值并将格式转换为yyyyMMdd,并添力口dwd_insert_user、dwd

31、_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_userdwd_modify_user均填写“userl,dwd_insert_timexdwd_modify_time均填写当前操作时间,并进行数据类型转换。id作为primaryKey,dwd_modify_time作为PreCombineField。使用spark-shell执行showpartitionsdwd_ds_hudi.fact_order_detail命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx中对应的任务序号下。子任务三:指标计

32、算编写SCala代码,使用SPark计算相关指标。注:在指标计算中,不考虑订单信息表中OrdeJStatUS字段的值,将所有订单视为有效订单。计算订单金额或订单总金额时只使用final_total_amount字段。需注意dwd_ds_hudi所有的维表取最新的分区。1、本任务基于以下2、3、4小题完成(不包括5,6题),使用AZkaban完成第2、3、4题任务代码的调度。工作流要求,使用shell输出“开始”作为工作流的第一个job(jobl),2、3、4题任务为串行任务且它们依赖jobl的完成(命名为job2.job3,job4),job2,job3、job4完成之后使用shell输出“结

33、束”作为工作流的最后一个job(endjob),endjob依赖job2、job3job4,并将最终任务调度完成后的工作流截图,将截图粘贴至客户端桌面【Release任务B提交结果.docx中对应的任务序号下;2、根据dwd_ds_hudi层表统计每人每天下单的数量和下单的总金额,存入HUdi的dws_ds_hudi层的USeJCOilSUInPtion_day_aggr表中(表结构如下),然后使用SPark-SheIl按照客户主键、订单总金额均为降序排序,查询出前5条,将SQL语句复制粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面

34、【Release任务B提交结果.docx】中对应的任务序号下;字段类型中文含义备注uuidstring随机字符随机字符,保证不同即可,作为primaryKeyuserjdint客户主键user_namestring客户名称total_amountdouble订单总金额当天订单总金额。total_countint订单总数当天订单总数。同时可作为PreeombineFieId(作为合并字段时,无意义,因为主键为随机生成)yearint年订单产生的年,为动态分区字段monthint月订单产生的月,为动态分区字段dayintB订单产生的日,为动态分区字段3、根据dwd_ds_hUdi库中的表统计每个省

35、每月下单的数量和下单的总金额,并按照year,month,region_id进行分组,按照total_amount降序排序,形成sequence值,将计算结果存入Hudi的dws_ds_hudi数据库province_consumption_day_aggr表中(表结构如下),然后使用spark-shell根据订单总数、订单总金额、省份表主键均为降序排序,查询出前5条,在查询时对于订单总金额字段将其转为bigint类型(避免用科学计数法展示),将SQL语句复制粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release任务B提交结

36、果.docx】中对应的任务序号下;字段类型中文含义备注uuidstring随机字符随机字符,保证不同即可,作为primaryKeyProvinceJdint省份表主键province_namestring省份名称regionjdint地区主键region_namestring地区名称total_amountdouble订单总金额当月订单总金额total_countint订单.总数当月订单总数。同时可作为PreCombineFieId(作为合并字段时,无意义,因为主键为随机生成)sequenceint次序yearint年订单产生的年,为动态分区字段monthint月订单产生的月,为动态分区字段4

37、、请根据dws_ds_hudi库中的表计算出每个省份2020年4月的平均订单金额和该省所在地区平均订单金额相比较结果(“高/低/相同),存入CliCkHOUSe数据库shtd_result的Provinceavgcmpregion表中(表结构如下),然后在LirIUX的CIiCkHOUSe命令行中根据省份表主键、省平均订单金额、地区平均订单金额均为降序排序,查询出前5条,将SQL语句复制粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;字段类型中文含义备注provinceid

38、int省份表主键provincenametext省份名称Provinceavgconsumptiondouble该省平均订单金额regionJdint地区表主键region_nametext地区名称regionavgconsumptiondouble地区平均订单金额该省所在地区平均订单金额comparisontext比较结果省平均订单金额和该省所在地区平均订单金额比较结果,值为:高/低/相同5、根据MySQL的Shtd_store.ordejinfo表。按照id进行升序累加订单的金额,取出累加值与目标值2023060600相差最小的前10条的订单id,按照差值从小到大进行排序,将计算结果存入M

39、ySQL数据库shtd_result的order_final_money_amount_diff表中(表结构如下),然后在LinUX的MySQL的命令行中查询Shtd_result.order_final_money_amount_diff所有数据,将SQL语句复制粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;字段类型中文含义备注orderjdint订单表主键订单表iddiff_valuedouble差值累加值与目标值的差值6、根据MySQL的Sht(LStore.ord

40、eJinfO表。按照id进行升序排序,取id小于等于20000的订单,求出连续订单中平均金额数最大前1000000的连续订单序列,若有多个平均金额数相同的连续订单序列,要求输出连续订单数最少的订单序列,若多个平均金额数相同的连续订单序列中的订单个数同样相同,则根据订单表主键集合进行字典降序排序。(要求订单连续序列的连续订单数大于或等于200条以上,即订单序列长度最少为200),将计算结果存入MySQL数据库shtd_result的max_avg_order_price_seq表中(表结构如下),然后在LinUX的MySQL的命令行中查询shtd_result.max_avg_order_pri

41、ce_seq中seq_index为1、10、100、IoO0、IoOoOOo的数据,将SQL语句复制粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release任务B提交结果.docx中对应的任务序号下。字段类型中文含义备注seqjndexint序列排名mysql自然增长序列,不重复avg_order_pricedouble订单均价连续订单序列中的订单价格均值id_rangetext订单表主键集订单表id(只存订单连续序列中订单id的最小值与订单id最大值),用拼接,如下所示:37901_38720matchnumInt序列长度任

42、务C:数据挖掘(10分)环境说明:服务端登录地址详见各任务服务端说明。补充说明:各节点可通过ASbrU工具或SSH客户端进行SSH访问;主节点MySQL数据库用户名/密码:root123456(已配置远程连接);Spark任务在Yarn上用Client运行,方便观察日志。该任务均使用SCaIa编写,利用SPark相关库完成。子任务一:特征工程剔除订单信息表与订单详细信息表中用户id与商品id不存在现有的维表中的记录,同时建议多利用缓存并充分考虑并行度来优化代码,达到更快的计算效果。1、根据Hudi的dwdds_hudi库中相关表或MySQL中shtd_store中相关表(OrdeJdetai1

43、、sku_info),计算出与用户id为6708的用户所购买相同商品种类最多的前10位用户(只考虑他俩购买过多少种相同的商品,不考虑相同的商品买了多少次),将10位用户id进行输出,若与多个用户购买的商品种类相同,则输出结果按照用户id升序排序,输出格式如下,将结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下;结果格式如下:相同种类前10的id结果展示为:1,2,901,4,5,21,32,91,14,522、根据Hudi的dwdds_hudi库中相关表或MySQL中shtd_store中相关商品表(sku_info),获取id、spu_id、price,w

44、eight.tm_id、Category3_id这六个字段并进行数据预处理,对PriCe、Weighl进行规范化(StanciardSCaIer)处理,对spu_id、tm_idCategOry3_id进行One-hot编码处理(若该商品属于该品牌则置为1,否则置为0),并按照id进行升序排序,在集群中输出第一条数据前10列(无需展示字段名),将结果截图粘贴至客户端桌面【Release任务C提交结果.docx中对应的任务序号下。字段类型中文含义备注iddouble主键pricedouble价格weightdouble重量spu_id#ldoublespu_id1若属于该spu_id,则内容为1

45、否则为Ospu_id#2doublespu_id2若属于该spu_id,则内容为1否则为0doubledouble品牌1若属于该品牌,则内容为1否则为0double品牌2若属于该品牌,则内容为1否则为0doublecategory3_id#ldouble分类级别31若属于该分类级别3,则内容为1否则为0category3_id#2double分类级别32若属于该分类级别3,则内容为1否则为0结果格式如下:第一条数据前10列结果展示为:1.0,0.892346,1.72568,0.0,0.0,0.0,0.0,1.0,0.0,0.0子任务二:推荐系统1、根据子任务一的结果,计算出与用户id为670

46、8的用户所购买相同商品种类最多的前10位用户id(只考虑他俩购买过多少种相同的商品,不考虑相同的商品买了多少次),并根据HUdi的dwd_ds_hudi库中相关表或MySQL数据库ShtCLStore中相关表,获取到这10位用户已购买过的商品,并剔除用户6708已购买的商品,通过计算这10位用户已购买的商品(剔除用户6708已购买的商品)与用户6708已购买的商品数据集中商品的余弦相似度累加再求均值,输出均值前5商品id作为推荐使用,将执行结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下。结果格式如下:一推荐Top5结果如下-相似度topl(商品id:1,平

47、均相似度:0.983456)相似度top2(商品id:71,平均相似度:0.782672)相似度top3(商品id:22,平均相似度:0.7635246)相似度top4(商品id:351,平均相似度:0.7335748)相似度top5(商品id:14,平均相似度:0.522356)任务D:数据采集与实时计算(20分)环境说明:服务端登录地址详见各任务服务端说明。补充说明:各节点可通过ASbrU工具或SSH客户端进行SSH访问;FIink任务在Yarn上用Perjob模式(即Job分离模式,不采用SeSSion模式),方便Yarn回收资源。子任务一:实时数据采集1、在主节点使用FIUIne采集实时数据生成器10050端口的SoCket数据,将数据存入到Kafka的Topic中(Topic名称为order,分区数为4),使用Kafka自带的消费者消费Order(TOPie)中的数据,将前2条数据的结果截图粘贴至客户端桌面【Release任务D提交结果.d

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号