(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx

(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx

ID:83631132

大小:39.40 KB

页数:24页

时间:2024-09-03

上传者:gjxwyhcr
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第1页
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第2页
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第3页
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第4页
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第5页
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第6页
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第7页
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第8页
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第9页
(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx_第10页
资源描述:

《(全国职业技能比赛:高职)GZ033大数据应用开发赛题第06套.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

2023年全国职业院校技能大赛赛题第06套赛项名称:大数据应用开发英文名称:BigDataApplicationDevelopment赛项组别:高等职业教育组赛项编号:GZ033 背景描述大数据时代背景下,电商经营模式发生很大改变。在传统运营模式中,缺乏数据积累,人们在做出一些决策行为过程中,更多是凭借个人经验和直觉,发展路径比较自我封闭。而大数据时代,为人们提供一种全新的思路,通过大量的数据分析得出的结果将更加现实和准确。商家可以对客户的消费行为信息数据进行收集和整理,比如消费者购买产品的花费、选择产品的渠道、偏好产品的类型、产品回购周期、购买产品的目的、消费者家庭背景、工作和生活环境、个人消费观和价值观等。通过数据追踪,知道顾客从哪儿来,是看了某网站投放的广告还是通过朋友推荐链接,是新访客还是老用户,喜欢浏览什么产品,购物车有无商品,是否清空,还有每一笔交易记录,精准锁定一定年龄、收入、对产品有兴趣的顾客,对顾客进行分组、标签化,通过不同标签组合运用,获得不同目标群体,以此开展精准推送。因数据驱动的零售新时代已经到来,没有大数据,我们无法为消费者提供这些体验,为完成电商的大数据分析工作,你所在的小组将应用大数据技术,以Scala作为整个项目的基础开发语言,基于大数据平台综合利用Hudi、Spark、Flink、Vue.js等技术,对数据进行处理、分析及可视化呈现,你们作为该小组的技术人员,请按照下面任务完成本次工作。 任务A:大数据平台搭建(容器环境)(15分)环境说明:服务端登录地址详见各任务服务端说明。补充说明:宿主机及各容器节点可通过Asbru工具或SSH客户端进行SSH访问。子任务一:Hadoop完全分布式安装配置本任务需要使用root用户完成相关配置,安装Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:1、从宿主机/opt目录下将文件hadoop-3.1.3.tar.gz、jdk-8u212-linux-x64.tar.gz复制到容器Master中的/opt/software路径中(若路径不存在,则需新建),将Master节点JDK安装包解压到/opt/module路径中(若路径不存在,则需新建),将JDK解压命令复制并粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;2、修改容器中/etc/profile文件,设置JDK环境变量并使其生效,配置完毕后在Master节点分别执行“java-version”和“javac”命令,将命令行执行结果分别截图并粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;3、请完成host相关配置,将三个节点分别命名为master、slave1、slave2,并做免密登录,用scp命令并使用绝对路径从Master复制JDK解压后的安装文件到slave1、slave2节点(若路径不存在,则需新建),并配置slave1、slave2相关环境变量,将全部scp复制JDK的命令复制并粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;4、在Master将Hadoop解压到/opt/module(若路径不存在,则需新建)目录下,并将解压包分发至slave1、slave2中,其中master、slave1、slave2 节点均作为datanode,配置好相关环境,初始化Hadoop环境namenode,将初始化命令及初始化结果截图(截取初始化结果日志最后20行即可)粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;1、启动Hadoop集群(包括hdfs和yarn),使用jps命令查看Master节点与slave1节点的Java进程,将jps命令与结果截图粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下。子任务二:SparkonYarn安装配置本任务需要使用root用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:1、从宿主机/opt目录下将文件spark-3.1.1-bin-hadoop3.2.tgz复制到容器Master中的/opt/software(若路径不存在,则需新建)中,将Spark包解压到/opt/module路径中(若路径不存在,则需新建),将完整解压命令复制粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;2、修改容器中/etc/profile文件,设置Spark环境变量并使环境变量生效,在/opt目录下运行命令spark-submit--version,将命令与结果截图粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;3、完成onyarn相关配置,使用sparkonyarn的模式提交$SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar运行的主类为org.apache.spark.examples.SparkPi,将运行结果截图粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下(截取Pi结果的前后各5行)。(运行命令为:spark-submit--masteryarn--classorg.apache.spark.examples.SparkPi$SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar)子任务三:Hudi安装配置本任务需要使用root用户完成相关配置,具体要求如下:1、从宿主机/opt目录下将maven相关安装包复制到容器Master中的/opt/software(若路径不存在,则需新建)中, 将maven相关安装包解压到/opt/module/目录下(若路径不存在,则需新建)并配置maven本地库为/opt/software/RepMaven/,远程仓库使用阿里云镜像,配置maven的环境变量,并在/opt/下执行mvn-v,将运行结果截图粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;nexus-aliyuncentralNexusaliyunhttp://maven.aliyun.com/nexus/content/groups/public1、从宿主机/opt目录下将Hudi相关安装包复制到容器Master中的/opt/software(若路径不存在,则需新建)中,将Hudi相关安装包解压到/opt/module/目录下(若路径不存在,则需新建),将命令复制并粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下;2、完成解压安装及配置后使用maven对Hudi进行构建(spark3.1,scala-2.12),编译完成后与Spark集成,集成后使用spark-shell操作Hudi,将spark-shell启动使用spark-shell运行下面给到的案例,并将最终查询结果截图粘贴至客户端桌面【Release任务A提交结果.docx】中对应的任务序号下。(提示:编译需要替换以下内容:1.将父模块pom.xml替换;2.hudi-common/src/main/java/org/apache/hudi/common/table/log/block/HoodieParquetDataBlock.java替换;2.将packaging/hudi-spark-bundle/pom.xml替换;3.将packaging/hudi-utilities-bundle/pom.xml替换)importorg.apache.hudi.QuickstartUtils._importscala.collection.JavaConversions._importorg.apache.spark.sql.SaveMode._importorg.apache.hudi.DataSourceReadOptions._importorg.apache.hudi.DataSourceWriteOptions._importorg.apache.hudi.config.HoodieWriteConfig._importorg.apache.hudi.common.model.HoodieRecordvaltableName="hudi_trips_cow"valbasePath="file:///tmp/hudi_trips_cow" valdataGen=newDataGeneratorvalinserts=convertToStringList(dataGen.generateInserts(10))valdf=spark.read.json(spark.sparkContext.parallelize(inserts,2))df.write.format("hudi").options(getQuickstartWriteConfigs).option(PRECOMBINE_FIELD_OPT_KEY,"ts").option(RECORDKEY_FIELD_OPT_KEY,"uuid").option(PARTITIONPATH_FIELD_OPT_KEY,"partitionpath").option(TABLE_NAME,tableName).mode(Overwrite).save(basePath)valtripsSnapshotDF=spark.read.format("hudi").load(basePath+"/*/*/*/*")tripsSnapshotDF.createOrReplaceTempView("hudi_trips_snapshot")spark.sql("selectfare,begin_lon,begin_lat,tsfromhudi_trips_snapshotwherefare>20.0").show() 任务B:离线数据处理(25分)环境说明:服务端登录地址详见各任务服务端说明。补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问;主节点MySQL数据库用户名/密码:root/123456(已配置远程连接);Spark任务在Yarn上用Client运行,方便观察日志。子任务一:数据抽取编写Scala代码,使用Spark将MySQL的shtd_store库中表user_info、sku_info、base_province、base_region、order_info、order_detail的数据增量抽取到Hudi的ods_ds_hudi库(路径为/user/hive/warehouse/ods_ds_hudi.db)的user_info、sku_info、base_province、base_region、order_info、order_detail中。(若ods_ds_hudi库中部分表没有数据,正常抽取即可)1、抽取shtd_store库中user_info的增量数据进入Hudi的ods_ds_hudi库中表user_info。根据ods_ds_hudi.user_info表中operate_time或create_time作为增量字段(即MySQL中每条数据取这两个时间中较大的那个时间作为增量字段去和ods_ds_hudi里的这两个字段中较大的时间进行比较),只将新增的数据抽入,字段名称、类型不变,同时添加分区,若operate_time为空,则用create_time填充,分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。id作为primaryKey,operate_time作为preCombineField。使用spark-shell执行showpartitionsods_ds_hudi.user_info命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下; 1、抽取shtd_store库中sku_info的增量数据进入Hudi的ods_ds_hudi库中表sku_info。根据ods_ds_hudi.sku_info表中create_time作为增量字段,只将新增的数据抽入,字段名称、类型不变,同时添加分区,分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。id作为primaryKey,operate_time作为preCombineField。使用spark-shell执行showpartitionsods_ds_hudi.sku_info命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;2、抽取shtd_store库中base_province的增量数据进入Hudi的ods_ds_hudi库中表base_province。根据ods_ds_hudi.base_province表中id作为增量字段,只将新增的数据抽入,字段名称、类型不变并添加字段create_time取当前时间,同时添加分区,分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。id作为primaryKey,create_time作为preCombineField。使用spark-shell执行showpartitionsods_ds_hudi.base_province命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;3、抽取shtd_store库中base_region的增量数据进入Hudi的ods_ds_hudi库中表base_region。根据ods_ds_hudi.base_region表中id作为增量字段,只将新增的数据抽入,字段名称、类型不变并添加字段create_time取当前时间,同时添加分区,分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。id作为primaryKey,create_time作为preCombineField。使用spark-shell执行showpartitionsods_ds_hudi.base_region命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;4、抽取shtd_store库中order_info的增量数据进入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执行showpartitionsods_ds_hudi.order_info命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;1、抽取shtd_store库中order_detail的增量数据进入Hudi的ods_ds_hudi库中表order_detail,根据ods_ds_hudi.order_detail表中create_time作为增量字段,只将新增的数据抽入,字段名称、类型不变,同时添加分区,分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。id作为primaryKey,create_time作为preCombineField。使用spark-shell执行showpartitionsods_ds_hudi.order_detail命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下。子任务二:数据清洗编写Scala代码,使用Spark将ods_ds_hudi库中相应表数据全量抽取到Hudi的dwd_ds_hudi库(路径为/user/hive/warehouse/dwd_ds_hudi.db)中对应表中。表中有涉及到timestamp类型的,均要求按照yyyy-MM-ddHH:mm:ss,不记录毫秒数,若原数据中只有年月日,则在时分秒的位置添加00:00:00,添加之后使其符合yyyy-MM-ddHH:mm:ss。(若dwd_ds_hudi库中部分表没有数据,正常抽取即可)1、抽取ods_ds_hudi库中user_info表中昨天的分区(子任务一生成的分区)数据,并结合dim_user_info最新分区现有的数据,根据id合并数据到dwd_ds_hudi库中dim_user_info的分区表(合并是指对dwd层数据进行插入或修改,需修改的数据以id为合并字段,根据operate_time排序 取最新的一条),分区字段为etl_date且值与ods_ds_hudi库的相对应表该值相等,并添加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存当前操作时间,其余列存最新的值。id作为primaryKey,operate_time作为preCombineField。使用spark-shell执行showpartitionsdwd_ds_hudi.dim_user_info命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;1、抽取ods_ds_hudi库sku_info表中昨天的分区(子任务一生成的分区)数据,并结合dim_sku_info最新分区现有的数据,根据id合并数据到dwd_ds_hudi库中dim_sku_info的分区表(合并是指对dwd层数据进行插入或修改,需修改的数据以id为合并字段,根据create_time排序取最新的一条),分区字段为etl_date且值与ods_ds_hudi库的相对应表该值相等,并添加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存当前操作时间,其余列存最新的值。id作为primaryKey,dwd_modify_time作为preCombineField。使用spark-shell查询表dim_sku_info的字段id、sku_desc、dwd_insert_user、dwd_modify_time、etl_date,条件为最新分区的数据,id大于等于15且小于等于20,并且按照id升序排序,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;2、抽取ods_ds_hudi库base_province表中昨天的分区(子任务一 生成的分区)数据,并结合dim_province最新分区现有的数据,根据id合并数据到dwd_ds_hudi库中dim_province的分区表(合并是指对dwd层数据进行插入或修改,需修改的数据以id为合并字段,根据create_time排序取最新的一条),分区字段为etl_date且值与ods_ds_hudi库的相对应表该值相等,并添加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存当前操作时间,其余列存最新的值。id作为primaryKey,dwd_modify_time作为preCombineField。使用spark-shell在表dwd_ds_hudi.dim_province最新分区中,查询该分区中数据的条数,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;1、抽取ods_ds_hudi库base_region表中昨天的分区(子任务一生成的分区)数据,并结合dim_region最新分区现有的数据,根据id合并数据到dwd_ds_hudi库中dim_region的分区表(合并是指对dwd层数据进行插入或修改,需修改的数据以id为合并字段,根据create_time排序取最新的一条),分区字段为etl_date且值与ods_ds_hudi库的相对应表该值相等,并添加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存当前操作时间,其余列存最新的值。id作为primaryKey,dwd_modify_time作为preCombineField。使用spark-shell在表dwd_ds_hudi.dim_region最新分区中,查询该分区中数据的条数,将结果截图粘贴至客户端桌面【Release任务 B提交结果.docx】中对应的任务序号下;1、将ods_ds_hudi库中order_info表昨天的分区(子任务一生成的分区)数据抽取到dwd_ds_hudi库中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均填写当前操作时间,并进行数据类型转换。id作为primaryKey,operate_time作为preCombineField。使用spark-shell执行showpartitionsdwd_ds_hudi.fact_order_info命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;2、将ods_ds_hudi库中order_detail表昨天的分区(子任务一中生成的分区)数据抽取到dwd_ds_hudi库中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均填写当前操作时间,并进行数据类型转换。id作为primaryKey,dwd_modify_time作为preCombineField。使用spark-shell执行showpartitionsdwd_ds_hudi.fact_order_detail命令,将结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下。子任务三:指标计算编写Scala代码,使用Spark计算相关指标。注:在指标计算中,不考虑订单信息表中order_status字段的值,将所有订单视为有效订单。计算订单金额或订单总金额时只使用final_total_amount字段。需注意dwd_ds_hudi所有的维表取最新的分区。1、 本任务基于以下2、3、4小题完成,使用Azkaban完成第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】中对应的任务序号下;1、根据dwd_ds_hudi层表统计每个省每月下单的数量和下单的总金额,并按照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提交结果.docx】中对应的任务序号下;字段类型中文含义备注uuidstring随机字符随机字符,保证不同即可,作为primaryKeyprovince_idint省份主键province_namestring省份名称region_idint地区主键region_namestring地区名称total_amountdouble订单总金额当月订单总金额total_countint订单总数当月订单总数。 同时可作为preCombineField(作为合并字段时,无意义,因为主键为随机生成)sequenceint次序yearint年订单产生的年,为动态分区字段monthint月订单产生的月,为动态分区字段1、请根据dwd_ds_hudi层的相关表,计算2020年销售量前10的商品,销售额前10的商品,存入ClickHouse数据库shtd_result的topten表中(表结构如下),然后在Linux的ClickHouse命令行中根据排名升序排序,查询出前5条,将SQL语句复制粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;字段类型中文含义备注topquantityidint商品id销售量前10的商品topquantitynametext商品名称销售量前10的商品topquantityint该商品销售量销售量前10的商品toppriceidtext商品id销售额前10的商品toppricenametext商品名称销售额前10的商品toppricedecimal该商品销售额销售额前10的商品sequenceint排名所属排名2、请根据dwd_ds_hudi层的相关表,计算出2020年每个省份所在地区的订单金额的中位数,存入ClickHouse数据库shtd_result的nationmedian表中(表结构如下),然后在Linux的ClickHouse命令行中根据地区表主键,省份表主键均为升序排序,查询出前5条,将SQL语句复制粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下,将执行结果截图粘贴至客户端桌面【Release任务B提交结果.docx】中对应的任务序号下;提示:可用percentile函数求取中位数。 字段类型中文含义备注provinceidint省份表主键provincenametext省份名称regionidint地区表主键regionnametext地区名称provincemediandouble该省份中位数该省份订单金额中位数regionmediandouble该省所在地区中位数该省所在地区订单金额中位数 任务C:数据挖掘(10分)环境说明:服务端登录地址详见各任务服务端说明。补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问;主节点MySQL数据库用户名/密码:root/123456(已配置远程连接);Spark任务在Yarn上用Client运行,方便观察日志。该任务均使用Scala编写,利用Spark相关库完成。子任务一:特征工程剔除订单信息表与订单详细信息表中用户id与商品id不存在于现有的维表中的记录,同时建议多利用缓存并充分考虑并行度来优化代码,达到更快的计算效果。1、据Hudi的dwd_ds_hudi库中相关表或MySQL数据库shtd_store中订单相关表(order_detail、order_info、sku_info),对用户购买过的商品进行去重,将其转换为以下格式:第一列为用户idmapping,第二列为用户购买过的商品idmapping,按照user_id与sku_id进行升序排序,输出前5行,将结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下;字段类型中文含义备注user_idint用户id的mapping对应键sku_idint商品id的mapping对应键提示:Mapping操作:例如用户id:1、4、7、8、9,则做完mapping操作转为字典类型,键0对应用户id1,键1对应用户id4,以此类推结果格式如下:-------user_id_mapping与sku_id_mapping数据前5条如下:------- 0:00:891:11:21:31、根据第1小题的结果,对其进行聚合,其中对sku_id进行one-hot转换,将其转换为以下格式矩阵:第一列为用户id,其余列名为商品id,按照用户id进行升序排序,展示矩阵第一行前5列数据,将结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下。字段类型中文含义备注user_iddouble客户keysku_id0double用户是否购买过商品1若用户购买过该商品,则值为1,否则为0sku_id1double用户是否购买过商品2若用户购买过该商品,则值为1,否则为0sku_id2double用户是否购买过商品3若用户购买过该商品,则值为1,否则为0.....结果格式如下:---------------第一行前5列结果展示为---------------0.0,1.0,0.0,0.0,0.0子任务二:推荐系统1、根据子任务一的结果,对其进行SVD分解,对数据进行降维保留前 5个奇异值信息,根据该用户已购买的商品分别与未购买的商品计算余弦相似度再进行累加求均值,将均值最大的5件商品id进行输出作为推荐使用。将输出结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下。结果格式如下:------------------------推荐Top5结果如下------------------------相似度top1(商品id:1,平均相似度: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访问;Flink任务在Yarn上用perjob模式(即Job分离模式,不采用Session模式),方便Yarn回收资源。子任务一:实时数据采集1、在主节点使用Flume采集实时数据生成器10050端口的socket数据,将数据存入到Kafka的Topic中(Topic名称为order,分区数为4),使用Kafka自带的消费者消费order(Topic)中的数据,将前2条数据的结果截图粘贴至客户端桌面【Release任务D提交结果.docx】中对应的任务序号下;2、采用多路复用模式,Flume接收数据注入kafka的同时,将数据备份到HDFS目录/user/test/flumebackup下,将查看备份目录下的第一个文件的前2条数据的命令与结果截图粘贴至客户端桌面【Release任务D提交结果.docx】中对应的任务序号下。子任务二:使用Flink处理Kafka中的数据编写Scala代码,使用Flink消费Kafka中Topic为order的数据并进行相应的数据统计计算(订单信息对应表结构order_info,订单详细信息对应表结构order_detail(来源类型和来源编号这两个字段不考虑,所以在实时数据中不会出现),同时计算中使用order_info或order_detail表中create_time或operate_time取两者中值较大者作为EventTime,若operate_time为空值或无此列,则使用create_time填充,允许数据延迟5s,订单状态order_status分别为1001:创建订单、1002:支付订单、1003:取消订单、1004:完成订单、1005: 申请退回、1006:退回完成。另外对于数据结果展示时,不要采用例如:1.9786518E7的科学计数法)。1、使用Flink消费Kafka中的数据,统计商城实时订单数量(需要考虑订单状态,若有取消订单、申请退回、退回完成则不计入订单数量,其他状态则累加),将key设置成totalcount存入Redis中。使用rediscli以getkey方式获取totalcount值,将结果截图粘贴至客户端桌面【Release任务D提交结果.docx】中对应的任务序号下,需两次截图,第一次截图和第二次截图间隔1分钟以上,第一次截图放前面,第二次截图放后面;2、在任务1进行的同时,使用侧边流,使用Flink消费Kafka中的订单详细信息的数据,实时统计商城中销售量前3的商品(不考虑订单状态,不考虑打折),将key设置成top3itemamount存入Redis中(value使用String数据格式,value为前3的商品信息并且外层用[]包裹,其中按排序依次存放商品id:销售量,并用逗号分割)。使用rediscli以getkey方式获取top3itemamount值,将结果截图粘贴至客户端桌面【Release任务D提交结果.docx】中对应的任务序号下,需两次截图,第一次截图和第二次截图间隔1分钟以上,第一次截图放前面,第二次截图放后面;示例如下:top3itemamount:[1:700,42:500,41:100]3、在任务1进行的同时,使用侧边流,使用Flink消费Kafka中的订单详细信息的数据,实时统计商城中销售额前3的商品(不考虑订单状态,不考虑打折,销售额为order_price*sku_num),将key设置成top3itemconsumption存入Redis中(value使用String数据格式,value为前3的商品信息并且外层用[]包裹,其中按排序依次存放商品id:销售额,并用逗号分割)。使用rediscli以getkey方式获取top3itemconsumption值,将结果截图粘贴至客户端桌面【Release任务D提交结果.docx】中对应的任务序号下,需两次截图,第一次截图和第二次截图间隔1分钟以上,第一次截图放前面,第二次截图放后面。 示例如下:top3itemconsumption:[1:10020.2,42:4540.0,12:540] 任务E:数据可视化(15分)环境说明:数据接口地址及接口描述详见各任务服务端说明。子任务一:用柱状图展示消费额最高的省份编写Vue工程代码,根据接口,用柱状图展示2020年消费额最高的5个省份,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release任务E提交结果.docx】中对应的任务序号下。子任务二:用饼状图展示各地区消费能力编写Vue工程代码,根据接口,用饼状图展示2020年各地区的消费总额占比,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release任务E提交结果.docx】中对应的任务序号下。子任务三:用折线图展示每年上架商品数量的变化编写Vue工程代码,根据接口,用折线图展示每年上架商品数量的变化情况,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release任务E提交结果.docx】中对应的任务序号下。子任务四:用条形图展示消费额最高的地区编写Vue工程代码,根据接口,用条形图展示2020年消费额最高的5个地区,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release任务E提交结果.docx】中对应的任务序号下。 子任务五:用散点图展示省份平均消费额编写Vue工程代码,根据接口,用基础散点图展示2020年最高10个省份平均消费额(四舍五入保留两位小数),同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至客户端桌面【Release任务E提交结果.docx】中对应的任务序号下。 任务F:综合分析(10分)子任务一:Spark中的HashShuffle的有哪些不足?请简述Spark中HashShuffle有哪些不足,将内容编写至客户端桌面【Release任务F提交结果.docx】中对应的任务序号下。子任务二:请简述Flink的Slot和parallelism有什么区别。请简述Flink的Slot和parallelism有什么区别,将内容编写至客户端桌面【Release任务F提交结果.docx】中对应的任务序号下。子任务三:分析下一年度的建仓目的地。根据任务E的图表,分析各省份的经济现状,公司决定挑选3个省份进行仓储建设,请问应该在哪些省份建设?将内容编写至客户端桌面【Release任务F提交结果.docx】中对应的任务序号下。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭