欢迎光临散文网 会员登陆 & 注册

大数据电商项目:离线数据处理及指标计算

2023-05-21 21:43 作者:_邪月大魔王  | 我要投稿

说明:

    此卷为2021年全国职业院校技能大赛河南省省赛B+C模块

    Spark版本为3.1.1,Hadoop版本为3.1.3,Scala版本为2.12,Hive版本为3.1.2。数据暂不共享

模块B:离线数据处理

数据抽取

编写Scala工程代码,将MySQL的shtd_store库中表CUSTOMER、NATION、PART、PARTSUPP、REGION、SUPPLIER的数据全量抽取到Hive的ods库中对应表customer,nation,part,partsupp,region,supplier中,将表ORDERS、LINEITEM的数据增量抽取到Hive的ods库中对应表ORDERS,LINEITEM中。

1、 抽取shtd_store库中CUSTOMER的全量数据进入Hive的ods库中表customer。字段排序、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。并在hive cli执行show partitions ods.customer命令,将结果截图复制粘贴至对应报告中;

2、 抽取shtd_store库中NATION的全量数据进入Hive的ods库中表nation。字段排序、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。并在hive cli执行show partitions ods.nation命令,将结果截图复制粘贴至对应报告中;

3、 抽取shtd_store库中PART的全量数据进入Hive的ods库中表part。字段排序、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。并在hive cli执行show partitions ods.part命令,将结果截图复制粘贴至对应报告中;

4、 抽取shtd_store库中PARTSUPP的全量数据进入Hive的ods库中表partsupp。字段排序、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。并在hive cli执行show partitions ods.partsupp命令,将结果截图复制粘贴至对应报告中;

5、 抽取shtd_store库中REGION的全量数据进入Hive的ods库中表region,字段排序、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。并在hive cli执行show partitions ods.region命令,将结果截图复制粘贴至对应报告中;

6、 抽取shtd_store库中SUPPLIER的全量数据进入Hive的ods库中表supplier,字段排序、类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。并在hive cli执行show partitions ods.supplier命令,将结果截图复制粘贴至对应报告中;

7、 抽取shtd_store库中ORDERS的增量数据进入Hive的ods库中表orders,要求只取某年某月某日及之后的数据(包括某年某月某日),根据ORDERS表中ORDERKEY作为增量字段(提示:对比MySQL和Hive中的表的ORDERKEY大小),只将新增的数据抽入,字段类型不变,同时添加动态分区,分区字段类型为String,且值为ORDERDATE字段的内容(ORDERDATE的格式为yyyy-MM-dd,分区字段格式为yyyyMMdd),。并在hive cli执行select count(distinct(etldate)) from  ods.orders命令,将结果截图复制粘贴至对应报告中;

8、抽取shtd_store库中LINEITEM的增量数据进入Hive的ods库中表lineitem,根据LINEITEM表中orderkey作为增量字段,只将新增的数据抽入,字段类型不变,同时添加静态分区,分区字段类型为String,且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。并在hive cli执行show partitions ods.lineitem命令,将结果截图复制粘贴至对应报告中。

任务二:数据清洗

编写Scala工程代码,将ods库中相应表数据全量抽取到Hive的dwd库中对应表中。表中有涉及到timestamp类型的,均要求按照yyyy-MM-dd HH:mm:ss,不记录毫秒数,若原数据中只有年月日,则在时分秒的位置添加00:00:00,添加之后使其符合yyyy-MM-dd HH:mm:ss。

1、 将ods库中customer表数据抽取到dwd库中dim_customer的分区表,分区字段为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中按照cust_key顺序排序,查询dim_customer前1条数据,将结果内容复制粘贴至对应报告中;

2、 将ods库中part表数据抽取到dwd库中dim_part的分区表,分区字段为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中按照part_key顺序排序,查询dim_part前1条数据,将结果内容复制粘贴至对应报告中;

3、 将ods库中nation表数据抽取到dwd库中dim_nation的分区表,分区字段为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中按照nation_key顺序排序,查询dim_nation前1条数据,将结果内容复制粘贴至对应报告中;

4、 将ods库中region表数据抽取到dwd库中dim_region的分区表,分区字段为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中按照region_key顺序排序,查询dim_region表前1条数据,将结果内容复制粘贴至对应报告中;

5、 将ods库中orders表数据抽取到dwd库中fact_orders的分区表,分区字段为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执行select count(distinct(etldate)) from dwd.fact_orders命令,将结果内容复制粘贴至对应报告中;

6、 待任务5完成以后,需删除ods.orders中的分区,仅保留最近的三个分区。并在hive cli执行show partitions ods.orders命令,将结果截图粘贴至对应报告中;

7、将ods库中lineitem表数据抽取到dwd库中fact_lineitem的分区表,分区字段为etldate且值与ods库的相对应表该值相等,抽取的条件为根据orderkey和partkey进行去重,并添加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执行show partitions dwd.fact_lineitem命令,将结果截图粘贴至对应报告中。

C:指标计算

1、 编写Scala工程代码,根据dwd层表统计每个地区、每个国家、每个月下单的数量和下单的总金额,存入MySQL数据库shtd_store的nationeverymonth表(表结构如下)中,然后在Linux的MySQL命令行中根据订单总数、消费总额、国家表主键三列均逆序排序的方式,查询出前5条,将SQL语句与执行结果截图粘贴至对应报告中;


 

2、 编写Scala工程代码,根据dwd层表统计连续两个月下单并且下单金额保持增长的用户,订单发生时间限制为大于等于某年,存入MySQL数据库shtd_store的usercontinueorder表(表结构如下)中。然后在Linux的MySQL命令行中根据订单总数、消费总额、客户主键三列均逆序排序的方式,查询出前5条,将SQL语句与执行结果截图粘贴至对应报告中。



大数据电商项目:离线数据处理及指标计算的评论 (共 条)

分享到微博请遵守国家法律