2024年高职师生同赛大数据应用开发赛项样题1_第1页
2024年高职师生同赛大数据应用开发赛项样题1_第2页
2024年高职师生同赛大数据应用开发赛项样题1_第3页
2024年高职师生同赛大数据应用开发赛项样题1_第4页
2024年高职师生同赛大数据应用开发赛项样题1_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

背景描述

大数据时代背景下,电商经营模式发生很大改变。在传统运营模

式中,缺乏数据积累,人们在做出一些决策行为过程中,更多是凭借

个人经验和直觉,发展路径比较自我封闭。而大数据时代,为人们提

供一种全新的思路,通过大量的数据分析得出的结果将更加现实和准

确。商家可以对客户的消费行为信息数据进行收集和整理,比如消费

者购买产品的花费、选择产品的渠道、偏好产品的类型、产品回购周

期、购买产品的目的、消费者家庭背景、工作和生活环境、个人消费

观和价值观等。通过数据追踪,知道顾客从哪儿来,是看了某网站投

放的广告还是通过朋友推荐链接,是新访客还是老用户,喜欢浏览什

么产品,购物车有无商品,是否清空,还有每一笔交易记录,精准锁

定一定年龄、收入、对产品有兴趣的顾客,对顾客进行分组、标签化,

通过不同标签组合运用,获得不同目标群体,以此开展精准推送。

因数据驱动的零售新时代已经到来,没有大数据,我们无法为消

费者提供这些体验,为完成电商的大数据分析工作,你所在的小组将

应用大数据技术,以Scala、Java作为整个项目的基础开发语言,基

于大数据平台综合利用Spark、Flink、Vue.js等技术,对数据进行

处理、分析及可视化呈现,你们作为该小组的技术人员,请按照下面

任务完成本次工作。

模块A:大数据平台搭建(容器环境)(10分)

环境说明:

服务端登录地址详见各模块服务端说明。

补充说明:宿主机可通过Asbru工具或SSH客户端进行SSH访问;

相关软件安装包在容器Master节点的/opt/software目录下,请选

择对应的安装包进行安装,用不到的可忽略;

所有模块中应用命令必须采用绝对路径;

进入Master节点的方式为

dockerexec-itmaster/bin/bash

进入Slave1节点的方式为

dockerexec-itslave1/bin/bash

进入Slave2节点的方式为

dockerexec-itslave2/bin/bash

三个容器节点的root密码均为123456

任务一:Hadoop完全分布式安装配置

本环节需要使用root用户完成相关配置,安装Hadoop需要配置前置环境。

命令中要求使用绝对路径,具体部署要求如下:

1、将容器Master节点JDK安装包解压并移动到/opt/module路径中(若路径不

存在,则需新建),将命令复制并粘贴至客户端桌面【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相关环境变量,将全部复制命令复制并粘贴至客户端桌面【Release\

模块A提交结果.docx】中对应的任务序号下;

4、在容器Master将Hadoop解压到/opt/module(若路径不存在,则需新建)目

录下,并将解压包分发至slave1、slave2中,其中master、slave1、slave2

节点均作为datanode,配置好相关环境,初始化Hadoop环境namenode,将

初始化命令及初始化结果截图(截取初始化结果结束倒数20行即可)复制

粘贴至客户端桌面【Release\模块A提交结果.docx】中对应的任务序号下;

5、启动Hadoop集群(包括hdfs和yarn),使用jps命令查看master节点与

slave1节点的java进程,将jps命令与结果截图复制粘贴至客户端桌面

【Release\模块A提交结果.docx】中对应的任务序号下。

任务二:HBase分布式部署

本环节需要使用root用户完成相关配置,安装HBase需要配置Hadoop和

ZooKeeper等前置环境。命令中要求使用绝对路径,具体要求如下:

1、确认是否完成Hadoop和ZooKeeper的分布式安装部署,若没有请进行安装

部署并启动。完成部署后在三个节点分别使用jps命令,并将结果分别截图

粘贴至客户端桌面【Release\模块A提交结果.docx】中对应的任务序号下;

2、将容器Master节点HBase安装包解压到/opt/module目录下,将解压命令复

制并粘贴至客户端桌面【Release\模块A提交结果.docx】中对应的任务序

号下;

3、用scp命令并使用绝对路径从master复制HBase解压后的包分发至slave1、

slave2中,并修改相关配置,配置好环境变量,在容器Master节点中运行

命令hbaseversion,将全部复制命令复制并将hbaseversion命令的结果

截图粘贴至客户端桌面【Release\模块A提交结果.docx】中对应的任务序

号下;

4、启动HBase后在三个节点分别使用jps命令查看,并将结果分别截图粘贴至

客户端桌面【Release\模块A提交结果.docx】中对应的任务序号下;正常

启动后在hbaseshell中查看命名空间,将查看命名空间的结果截图粘贴至

客户端桌面【Release\模块A提交结果.docx】中对应的任务序号下。

模块B:数据采集(15分)

环境说明:

服务端登录地址详见各模块服务端说明。

补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问;

主节点MySQL数据库用户名/密码:root/123456(已配置远程连接);

Hive的配置文件位于主节点/opt/module/hive-3.1.2/conf/

Spark任务在Yarn上用Client运行,方便观察日志;

建议使用gson解析json数据。

任务一:离线数据采集

编写Scala工程代码,将MySQL的ds_db01库中表order_master、

order_detail、coupon_info、coupon_use、product_browse、product_info、

customer_inf、customer_login_log、order_cart、customer_level_inf、

customer_addr的数据增量抽取到Hive的ods库中对应表order_master、

order_detail、coupon_info、coupon_use、product_browse、product_info、

customer_inf、customer_login_log、order_cart、customer_level_inf、

customer_addr中(ods库中部分表没有数据,正常抽取即可)。

1、抽取ds_db01库中order_master的增量数据进入Hive的ods库中表

order_master。根据ods.order_master表中modified_time作为增量字段,

只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段

为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段

格式为yyyyMMdd)。使用hivecli执行showpartitionsods.order_master

命令,将执行结果截图粘贴至客户端桌面【Release\模块B提交结果.docx】

中对应的任务序号下;

2、抽取ds_db01库中order_detail的增量数据进入Hive的ods库中表

order_detail。根据ods.order_detail表中modified_time作为增量字段,

只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段

为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段

格式为yyyyMMdd)。使用hivecli执行showpartitionsods.order_detail

命令,将执行结果截图粘贴至客户端桌面【Release\模块B提交结果.docx】

中对应的任务序号下;

3、抽取ds_db01库中coupon_info的增量数据进入Hive的ods库中表

coupon_info,根据ods.coupon_info表中modified_time作为增量字段,

只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段

为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段

格式为yyyyMMdd)。使用hivecli执行showpartitionsods.coupon_info

命令,将执行结果截图粘贴至客户端桌面【Release\模块B提交结果.docx】

中对应的任务序号下;

4、抽取ds_db01库中coupon_use的增量数据进入Hive的ods库中表

coupon_use,增量字段取ods.coupon_use表中get_time、used_time、

pay_time中的最大者,只将新增的数据抽入,字段名称、类型不变,同时添

加静态分区,分区字段为etl_date,类型为String,且值为当前比赛日的

前一天日期(分区字段格式为yyyyMMdd)。使用HiveCli查询最新分区数

据总条数,将执行结果截图粘贴至客户端桌面【Release\模块B提交结

果.docx】中对应的任务序号下;

5、抽取ds_db01库中product_browse的增量数据进入Hive的ods库中表

product_browse,根据duct_browse表中modified_time作为增量

字段,只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分

区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分

区字段格式为yyyyMMdd)。使用hivecli执行showpartitions

duct_browse命令,将执行结果截图粘贴至客户端桌面【Release\

模块B提交结果.docx】中对应的任务序号下。

6、抽取ds_db01库中product_info的增量数据进入Hive的ods库中表

product_info,根据duct_info表中modified_time作为增量字段,

只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段

为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段

格式为yyyyMMdd)。使用hivecli执行showpartitionsduct_info

命令,将执行结果截图粘贴至客户端桌面【Release\模块B提交结果.docx】

中对应的任务序号下;

7、抽取ds_db01库中customer_inf的增量数据进入Hive的ods库中表

customer_inf,根据ods.customer_inf表中modified_time作为增量字段,

只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段

为etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段

格式为yyyyMMdd)。使用hivecli执行showpartitionsods.customer_inf

命令,将执行结果截图粘贴至客户端桌面【Release\模块B提交结果.docx】

中对应的任务序号下;

8、抽取ds_db01库中customer_login_log的增量数据进入Hive的ods库中表

customer_login_log,根据ods.customer_login_log表中login_time作为

增量字段,只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,

分区字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分

区字段格式为yyyyMMdd)。使用hivecli执行showpartitionsods.

customer_login_log命令,将执行结果截图粘贴至客户端桌面【Release\

模块B提交结果.docx】中对应的任务序号下;

9、抽取ds_db01库中order_cart的增量数据进入Hive的ods库中表

order_cart,根据ods.order_cart表中modified_time作为增量字段,只

将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区字段为

etl_date,类型为String,且值为当前比赛日的前一天日期(分区字段格式

为yyyyMMdd)。使用hivecli执行showpartitionsods.order_cart命令,

将执行结果截图粘贴至客户端桌面【Release\模块B提交结果.docx】中对

应的任务序号下;

10、抽取ds_db01库中customer_addr的增量数据进入Hive的ods库中表

customer_addr,根据ods.customer_addr表中modified_time作为增量字

段,只将新增的数据抽入,字段名称、类型不变,同时添加静态分区,分区

字段为etl_date,类型为String,且值为当前比赛日的前一天日期(分区

字段格式为yyyyMMdd)。使用hivecli执行showpartitionsods.

customer_addr命令,将执行结果截图粘贴至客户端桌面【Release\模块B

提交结果.docx】中对应的任务序号下;

11、抽取ds_db01库中customer_level_inf的增量数据进入Hive的ods库

中表customer_level_inf,根据ods.customer_level_inf表中

modified_time作为增量字段,只将新增的数据抽入,字段名称、类型不变,

同时添加静态分区,分区字段为etl_date,类型为String,且值为当前比

赛日的前一天日期(分区字段格式为yyyyMMdd)。使用hivecli执行show

partitionsods.customer_level_inf命令,将执行结果截图粘贴至客户端

桌面【Release\模块B提交结果.docx】中对应的任务序号下。

任务二:实时数据采集

1、在主节点使用Flume采集实时数据生成器25001端口的socket数据(实时

数据生成器脚本为主节点/data_log目录下的gen_ds_data_to_socket脚本,

该脚本为Master节点本地部署且使用socket传输),将数据存入到Kafka

的Topic中(Topic名称为ods_mall_log,分区数为2,ZK关于Kafka的信

息在其/kafka节点),使用Kafka自带的消费者消费ods_mall_log(Topic)

中的数据,查看Topic中的前1条数据的结果,将查看命令与结果完整的截

图粘贴至客户端桌面【Release\模块B提交结果.docx】中对应的任务序号

下;

注:需先启动已配置好的Flume再启动脚本,否则脚本将无法成功启动,启动

方式为进入/data_log目录执行./gen_ds_data_to_socket(如果没有权限,请

执行授权命令chmod777/data_log/gen_ds_data_to_socket)

2、实时脚本启动后,在主节点进入到maxwell-1.29.0的解压后目录下(在

/opt/module下),配置相关文件并启动,读取主节点MySQL数据的binlog

日志(MySQL的binlog相关配置已完毕,只需要关注ds_realtime_db数据

库的表)到Kafka的Topic中(Topic名称为ods_mall_data,分区数为2,

ZK关于Kafka的信息在其/kafka节点)。使用Kafka自带的消费者消费

ods_mall_data(Topic)中的数据,查看Topic中的前1条数据的结果,将

查看命令与结果完整的截图粘贴至客户端桌面【Release\模块B提交结

果.docx】中对应的任务序号下。

模块C:实时数据处理(25分)

环境说明:

服务端登录地址详见各模块服务端说明。

补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问;

主节点MySQL数据库用户名/密码:root/123456(已配置远程连接);

Flink任务在Yarn上用perjob模式(即Job分离模式,不采用

Session模式),方便Yarn回收资源;

建议使用gson解析json数据。

任务一:实时数据清洗

编写Java工程代码,使用Flink消费Kafka中Topic为ods_mall_log和

ods_mall_data的数据并进行相应的数据统计计算(使用ProcessingTime)。

1、使用Flink消费Kafka中topic为ods_mall_data的数据,根据数据中不同

的表将数据分别分发至kafka的DWD层的fact_order_master、

fact_order_detail的Topic中(只获取data的内容,具体的内容格式请自

查,其分区数均为2),其他的表则无需处理。使用Kafka自带的消费者消

费fact_order_master(Topic)的前1条数据,将结果截图粘贴至客户端桌

面【Release\模块C提交结果.docx】中对应的任务序号下;

fact_order_master表结构,存储位置:Kafka,存储格式:json

字段类型中文含义(和备注

MySQL中相同)

order_idint

order_snstring

customer_idint

shipping_userstring

provincestring

citystring

addressstring

order_sourceint

payment_methodint

order_moneydouble

district_moneydouble

shipping_moneydouble

payment_moneydouble

shipping_comp_namestring

shipping_snstring

create_timetimestamp

shipping_timetimestamp

pay_timetimestamp

receive_timetimestamp

order_statusstring

order_pointint

invoice_titlestring

modified_timetimestamp

fact_order_detail表结构,存储位置:Kafka,存储格式:json

字段类型中文含义(和备注

MySQL中相同)

order_detail_idint

order_snstring

product_idint

product_namestring

product_cntint

product_pricedouble

average_costdouble

weightdouble

fee_moneydouble

w_idint

create_timetimestamp

modified_timetimestamp

2、使用Flink消费Kafka中topic为ods_mall_log的数据,根据数据中不同

的表前缀区分,过滤出product_browse的数据,将数据分别分发至kafka

的DWD层log_product_browse的Topic中,其分区数为2,其他的表则无需

处理。使用Kafka自带的消费者消费log_product_browse(Topic)的前1

条数据,将结果截图粘贴至客户端桌面【Release\模块C提交结果.docx】

中对应的任务序号下。

log_product_browse表结构,存储位置:Kafka,存储格式:json

字段类型中文含义备注

(和

MySQL中

相同)

log_idlong自增长id可以使用随机数(0-9)

+MMddHHmmssSSS代

product_idstring

customer_idint

gen_orderint

order_snstring

modified_timetimestamp

3、在任务1、2进行的同时,需要将order_master、order_detail、

product_browse备份至HBase中(若Int类型长度不够,可使用BigInt或

Long类型代替),使用HBaseShell查看ods:order_master表的任意2条

数据,查看字段为row_key与shipping_user、查看ods:order_detail表的

任意2条数据,查看字段为row_key与product_name、查看

ods:product_browse表的任意2条数据,查看字段为row_key与order_sn。

将结果分别截图粘贴至客户端桌面【Release\模块C提交结果.docx】中对

应的任务序号下(截图中不能有乱码)。

三个HBase中的数据结构为:

ods:order_master数据结构如下:

字段类型中文含义备注

(和

MySQL中

相同)

rowkeystringrowkey可以使用随机数(0-9)

+yyyyMMddHHmmssSSS

(date的格式)代替

Info列族名

order_idint

order_snstring

customer_idint

shipping_userstring

provincestring

citystring

addressstring

order_sourceint

payment_methodint

order_moneydouble

district_moneydouble

shipping_moneydouble

payment_moneydouble

shipping_comp_namestring

shipping_snstring

create_timestring

shipping_timestring

pay_timestring

receive_timestring

order_statusstring

order_pointint

invoice_titlestring

modified_timestring

ods:order_detail数据结构如下:

字段类型中文含义备注

(和

MySQL中

相同)

rowkeystringrowkey可以使用随机数(0-9)

+yyyyMMddHHmmssSSS

(date的格式)代替

Info列族名

order_detail_idint

order_snstring

product_idint

product_namestring

product_cntint

product_pricedouble

average_costdouble

weightdouble

fee_moneydouble

w_idint

create_timestring

modified_timestring

ods:product_browse数据结构如下:

字段类型中文含义备注

(和

MySQL中

相同)

rowkeystringrowkey该字段使用logid进行拆分,

将log_id拆分为随机数和

MMddHHmmssSSS两块,在其

中插入yyyy(date的格式)

最终格式为:

随机数(0-9)+yyyy

+MMddHHmmssSSS

Info列族名

log_idint该字段缺失,使用随机数(0-9)+

MMddHHmmssSSS(date的格式)

order_snstring

product_idint

customer_idstring

gen_orderint

modified_timedouble

任务二:实时指标计算

编写Java工程代码,使用Flink消费Kafka中dwd层的Topic数据,表结

构与离线数据表结构相同,时间语义使用ProcessingTime。

1、使用Flink消费kafka中log_product_browse主题的数据,统计商品的UV

(浏览用户量)和PV(商品浏览量),将结果写入HBase中的表ads:

online_uv_pv中。使用Hivecli(没写错)查询ads.pv_uv_result表按照

product_id和pv进行降序排序,查询出10条数据,将结果截图粘贴至客户

端桌面【Release\模块C提交结果.docx】中对应的任务序号下;

其中,表空间为:ads,rowkey为:计算时的年月日时分秒+商品id,列族为:

info,列名为:商品id,商品名称,uv,pv,modified_time

例:

Rowkey:2022-10-2416:47:38-13645

模块D:离线数据处理(20分)

环境说明:

服务端登录地址详见各模块服务端说明。

补充说明:各节点可通过Asbru工具或SSH客户端进行SSH访问;

主节点MySQL数据库用户名/密码:root/123456(已配置远程连接);

Hive的配置文件位于主节点/opt/module/hive-3.1.2/conf/

Spark任务在Yarn上用Client运行,方便观察日志;

ClickHouse的jdbc连接端口8123,用户名/密码:default/123456,

命令行客户端(tcp)端口9001;

建议使用gson解析json数据。

任务一:离线数据清洗

编写Scala工程代码,将ods库中表order_master、order_detail、

coupon_info、coupon_use、product_browse、product_info、customer_inf、

customer_login_log、order_cart、customer_level_inf、customer_addr抽取

到Hive的dwd库中对应表中。表中有涉及到timestamp类型的,均要求按照

yyyy-MM-ddHH:mm:ss,不记录毫秒数,若原数据中只有年月日,则在时分秒的

位置添加00:00:00,添加之后使其符合yyyy-MM-ddHH:mm:ss。

1、抽取ods库中表customer_inf最新分区数据,并结合dim_customer_inf最

新分区现有的数据,根据customer_id合并数据到dwd库中

dim_customer_inf的分区表(合并是指对dwd层数据进行插入或修改,需修

改的数据以customer_id为合并字段,根据modified_time排序取最新的一

条),分区字段为etl_date且值与ods库的相对应表该值相等,并添加

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存当前操作时间,其

余列存最新的值。使用hivecli查询modified_time为2022年10月01日

当天的数据,查询字段为customer_id、customer_email、modified_time、

dwd_insert_time、dwd_modify_time,并按照customer_id进行升序排序,

将结果截图粘贴至客户端桌面【Release\模块D提交结果.docx】中对应的

任务序号下;

2、抽取ods库中表coupon_info最新分区数据,并结合dim_coupon_info最新

分区现有的数据,根据coupon_id合并数据到dwd库中dim_coupon_info的

分区表(合并是指对dwd层数据进行插入或修改,需修改的数据以coupon_id

为合并字段,根据modified_time排序取最新的一条),分区字段为etl_date

且值与ods库的相对应表该值相等,并添加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存当前操作时间,其余列存

最新的值。使用hivecli执行showpartitionsdwd.dim_coupon_info命

令,将结果截图粘贴至客户端桌面【Release\模块D提交结果.docx】中对

应的任务序号下;

3、抽取ods库中表product_info最新分区的数据,并结合dim_product_info

最新分区现有的数据,根据product_core合并数据到dwd库中

dim_product_info的分区表(合并是指对dwd层数据进行插入或修改,需修

改的数据以product_core为合并字段,根据modified_time排序取最新的

一条),分区字段为etl_date且值与ods库的相对应表该值相等,并添加

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存当前操作时间,其

余列存最新的值。使用hivecli执行showpartitions

dwd.dim_product_info命令,将结果截图粘贴至客户端桌面【Release\模块

D提交结果.docx】中对应的任务序号下;

4、抽取ods库中表order_master最新分区的数据,并结合HBase中

order_master_offline表中的数据合并抽取到dwd库中fact_order_master

的分区表,分区字段为etl_date且值与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均填写当前操作时间(年月日必须是今

天,时分秒只需在比赛时间范围内即可),抽取HBase中的数据时,只抽取

2022年10月01日的数据(以rowkey为准),并进行数据类型转换。使用

hivecli查询modified_time为2022年10月01日当天的数据,查询字段

为order_id、order_sn、shipping_user、create_time、shipping_time,

并按照order_id进行升序排序,将结果截图复制粘贴至客户端桌面

【Release\模块D提交结果.docx】中对应的任务序号下;

ods:order_master_offline数据结构如下:

字段类型中文含义备注

rowkeystringrowkey随机数(0-9)

+yyyyMMddHHmmssSSS(date的

格式)

Info列族名

order_idint

order_snstring

customer_idint

shipping_userstring

provincestring

citystring

addressstring

order_sourceint

payment_methodint

order_moneydouble

district_moneydouble

shipping_moneydouble

payment_moneydouble

shipping_comp_namestring

shipping_snstring

create_timestring

shipping_timestring

pay_timestring

receive_timestring

order_statusstring

order_pointint

invoice_titlestring

modified_timestring

5、抽取ods库中表order_detail表最新分区的数据,并结合HBase中

order_detail_offline表中的数据合并抽取到dwd库中fact_order_detail

的分区表,分区字段为etl_date且值与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均填写当前操作时间(年月日必须是今

天,时分秒只需在比赛时间范围内即可),抽取HBase中的数据时,只抽取

2022年10月01日的数据(以rowkey为准),并进行数据类型转换。使用

hivecli查询modified_time为2022年10月01日当天的数据,查询字段

为order_detail_id、order_sn、product_name、create_time,并按照

order_detail_id进行升序排序,将结果截图粘贴至客户端桌面【Release\

模块D提交结果.docx】中对应的任务序号下;

ods:order_detail_offline数据结构如下:

字段类型中文含义备注

rowkeystringrowkey随机数(0-9)

+yyyyMMddHHmmssSSS(date的

格式)

Info列族名

order_detail_idint

order_snstring

product_idint

product_namestring

product_cntint

product_pricedouble

average_costdouble

weightdouble

fee_moneydouble

w_idint

create_timestring

modified_timestring

6、抽取ods库中表coupon_use最新分区的数据到dwd库中fact_coupon_use

的分区表,分区字段为etl_date且值与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执行showpartitionsdwd.fact_coupon_use命令,将结果截图粘贴至

客户端桌面【Release\模块D提交结果.docx】中对应的任务序号下;

7、抽取ods库中表customer_login_log最新分区的数据到dwd库中

log_customer_login的分区表,分区字段为etl_date且值与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

均填写当前操作时间(年月日必须是今天,时分秒只需在比赛时间范围内即

可),并进行数据类型转换。使用hivecli执行showpartitions

dwd.log_customer_login命令,将结果截图粘贴至客户端桌面【Release\

模块D提交结果.docx】中对应的任务序号下;

8、抽取ods库中表order_cart最新分区的数据到dwd库中fact_order_cart

的分区表,分区字段为etl_date且值与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执行showpartitionsdwd.fact_order_cart命令,将结果截图粘贴至

客户端桌面【Release\模块D提交结果.docx】中对应的任务序号下;

9、抽取ods库中表product_browse最新分区的数据,并结合HBase中

product_browse_offline表中的数据合并抽取到dwd库中

log_product_browse的分区表,分区字段为etl_date且值与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

均填写当前操作时间(年月日必须是今天,时分秒只需在比赛时间范围内即

可),抽取HBase中的数据时,只抽取2022年10月01日的数据(以rowkey

为准),并进行数据类型转换。使用hivecli查询modified_time为2022

年10月01日当天的数据,查询字段为log_id、product_id、order_sn、

modified_time,并按照log_id进行升序排序,将结果截图粘贴至客户端桌

面【Release\模块D提交结果.docx】中对应的任务序号下;

ods:product_browse_offline数据结构如下:

字段类型中文含义备注

rowkeystringrowkey随机数(0-9)

+MMddHHmmssSSS

Info列族名

log_idint

product_idint

customer_idstring

gen_orderint

order_snstring

modified_timedouble

10、抽取ods库中表customer_level_inf最新分区的数据到dwd库中

dim_customer_level_inf的分区表,分区字段为etl_date且值与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

均填写当前操作时间(年月日必须是今天,时分秒只需在比赛时间范围内即

可),并进行数据类型转换。使用hivecli执行showpartitionsdwd.

dim_customer_level_inf命令,将结果截图粘贴至客户端桌面【Release\

模块D提交结果.docx】中对应的任务序号下;

11、抽取ods库中表customer_addr最新分区的数据到dwd库中

dim_customer_addr的分区表,分区字段为etl_date且值与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均填写当前操作时间(年

月日必须是今天,时分秒只需在比赛时间范围内即可),并进行数据类型转

换。使用hivecli执行showpartitionsdwd.dim_customer_addr命令,

将结果截图粘贴至客户端桌面【Release\模块D提交结果.docx】中对应的

任务序号下;

12、将dwd库中dim_customer_inf、dim_customer_addr、

dim_customer_level_inf表的数据关联到dws库中

customer_addr_level_aggr的分区表,分区字段为etl_date,类型为String,

且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd),并添加

dws_insert_user、dws_insert_time、dws_modify_user、dws_modify_time

四列,其中dws_insert_user、dws_modify_user均填写“user1”,

dws_insert_time、dws_modify_time均填写当前操作时间(年月日必须是今

天,时分秒只需在比赛时间范围内即可),并进行数据类型转换。使用hive

cli统计最新分区中的数据总量,将结果截图粘贴至客户端桌面【Release\

模块D提交结果.docx】中对应的任务序号下。

任务二:离线指标计算

1、编写Scala工程代码,根据dwd的订单表dwd.fact_order_master,求各省

份下单时间为2022年的支付转化率,并将计算结果按照下述表结构写入

clickhouse的ds_result库的payment_cvr表。在Linux的clickhouse命

令行中根据ranking字段查询出转化率前三的省份,将SQL语句与执行结果

截图粘贴至客户端桌面【Release\模块D提交结果.docx】中对应的任务序

号下;

注:支付转化率=完成支付的订单数/已下单数。

payment_cvr表结构:

字段类型中文含义备注

provincestring省份名

creat_orderint已下单数

paymentint已支付的订单数

payCVRfloat64支付转化率四舍五入保留三位小数

rankingint转化率排名

模块E:数据可视化(15

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论