2024年高職師生同賽大數(shù)據(jù)應用開發(fā)賽項樣題1_第1頁
2024年高職師生同賽大數(shù)據(jù)應用開發(fā)賽項樣題1_第2頁
2024年高職師生同賽大數(shù)據(jù)應用開發(fā)賽項樣題1_第3頁
2024年高職師生同賽大數(shù)據(jù)應用開發(fā)賽項樣題1_第4頁
2024年高職師生同賽大數(shù)據(jù)應用開發(fā)賽項樣題1_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

背景描述

大數(shù)據(jù)時代背景下,電商經(jīng)營模式發(fā)生很大改變。在傳統(tǒng)運營模

式中,缺乏數(shù)據(jù)積累,人們在做出一些決策行為過程中,更多是憑借

個人經(jīng)驗和直覺,發(fā)展路徑比較自我封閉。而大數(shù)據(jù)時代,為人們提

供一種全新的思路,通過大量的數(shù)據(jù)分析得出的結果將更加現(xiàn)實和準

確。商家可以對客戶的消費行為信息數(shù)據(jù)進行收集和整理,比如消費

者購買產(chǎn)品的花費、選擇產(chǎn)品的渠道、偏好產(chǎn)品的類型、產(chǎn)品回購周

期、購買產(chǎn)品的目的、消費者家庭背景、工作和生活環(huán)境、個人消費

觀和價值觀等。通過數(shù)據(jù)追蹤,知道顧客從哪兒來,是看了某網(wǎng)站投

放的廣告還是通過朋友推薦鏈接,是新訪客還是老用戶,喜歡瀏覽什

么產(chǎn)品,購物車有無商品,是否清空,還有每一筆交易記錄,精準鎖

定一定年齡、收入、對產(chǎn)品有興趣的顧客,對顧客進行分組、標簽化,

通過不同標簽組合運用,獲得不同目標群體,以此開展精準推送。

因數(shù)據(jù)驅(qū)動的零售新時代已經(jīng)到來,沒有大數(shù)據(jù),我們無法為消

費者提供這些體驗,為完成電商的大數(shù)據(jù)分析工作,你所在的小組將

應用大數(shù)據(jù)技術,以Scala、Java作為整個項目的基礎開發(fā)語言,基

于大數(shù)據(jù)平臺綜合利用Spark、Flink、Vue.js等技術,對數(shù)據(jù)進行

處理、分析及可視化呈現(xiàn),你們作為該小組的技術人員,請按照下面

任務完成本次工作。

模塊A:大數(shù)據(jù)平臺搭建(容器環(huán)境)(10分)

環(huán)境說明:

服務端登錄地址詳見各模塊服務端說明。

補充說明:宿主機可通過Asbru工具或SSH客戶端進行SSH訪問;

相關軟件安裝包在容器Master節(jié)點的/opt/software目錄下,請選

擇對應的安裝包進行安裝,用不到的可忽略;

所有模塊中應用命令必須采用絕對路徑;

進入Master節(jié)點的方式為

dockerexec-itmaster/bin/bash

進入Slave1節(jié)點的方式為

dockerexec-itslave1/bin/bash

進入Slave2節(jié)點的方式為

dockerexec-itslave2/bin/bash

三個容器節(jié)點的root密碼均為123456

任務一:Hadoop完全分布式安裝配置

本環(huán)節(jié)需要使用root用戶完成相關配置,安裝Hadoop需要配置前置環(huán)境。

命令中要求使用絕對路徑,具體部署要求如下:

1、將容器Master節(jié)點JDK安裝包解壓并移動到/opt/module路徑中(若路徑不

存在,則需新建),將命令復制并粘貼至客戶端桌面【Release\模塊A提交

結果.docx】中對應的任務序號下;

2、修改/etc/profile文件,設置JDK環(huán)境變量,配置完畢后在master節(jié)點分

別執(zhí)行“java-version”和“javac”命令,將命令行執(zhí)行結果分別截圖并

粘貼至客戶端桌面【Release\模塊A提交結果.docx】中對應的任務序號下;

3、請完成host相關配置,將三個節(jié)點分別命名為master、slave1、slave2,

并做免密登錄,用scp命令并使用絕對路徑從master復制JDK解壓后的安

裝文件到slave1、slave2節(jié)點(若路徑不存在,則需新建),并配置slave1、

slave2相關環(huán)境變量,將全部復制命令復制并粘貼至客戶端桌面【Release\

模塊A提交結果.docx】中對應的任務序號下;

4、在容器Master將Hadoop解壓到/opt/module(若路徑不存在,則需新建)目

錄下,并將解壓包分發(fā)至slave1、slave2中,其中master、slave1、slave2

節(jié)點均作為datanode,配置好相關環(huán)境,初始化Hadoop環(huán)境namenode,將

初始化命令及初始化結果截圖(截取初始化結果結束倒數(shù)20行即可)復制

粘貼至客戶端桌面【Release\模塊A提交結果.docx】中對應的任務序號下;

5、啟動Hadoop集群(包括hdfs和yarn),使用jps命令查看master節(jié)點與

slave1節(jié)點的java進程,將jps命令與結果截圖復制粘貼至客戶端桌面

【Release\模塊A提交結果.docx】中對應的任務序號下。

任務二:HBase分布式部署

本環(huán)節(jié)需要使用root用戶完成相關配置,安裝HBase需要配置Hadoop和

ZooKeeper等前置環(huán)境。命令中要求使用絕對路徑,具體要求如下:

1、確認是否完成Hadoop和ZooKeeper的分布式安裝部署,若沒有請進行安裝

部署并啟動。完成部署后在三個節(jié)點分別使用jps命令,并將結果分別截圖

粘貼至客戶端桌面【Release\模塊A提交結果.docx】中對應的任務序號下;

2、將容器Master節(jié)點HBase安裝包解壓到/opt/module目錄下,將解壓命令復

制并粘貼至客戶端桌面【Release\模塊A提交結果.docx】中對應的任務序

號下;

3、用scp命令并使用絕對路徑從master復制HBase解壓后的包分發(fā)至slave1、

slave2中,并修改相關配置,配置好環(huán)境變量,在容器Master節(jié)點中運行

命令hbaseversion,將全部復制命令復制并將hbaseversion命令的結果

截圖粘貼至客戶端桌面【Release\模塊A提交結果.docx】中對應的任務序

號下;

4、啟動HBase后在三個節(jié)點分別使用jps命令查看,并將結果分別截圖粘貼至

客戶端桌面【Release\模塊A提交結果.docx】中對應的任務序號下;正常

啟動后在hbaseshell中查看命名空間,將查看命名空間的結果截圖粘貼至

客戶端桌面【Release\模塊A提交結果.docx】中對應的任務序號下。

模塊B:數(shù)據(jù)采集(15分)

環(huán)境說明:

服務端登錄地址詳見各模塊服務端說明。

補充說明:各節(jié)點可通過Asbru工具或SSH客戶端進行SSH訪問;

主節(jié)點MySQL數(shù)據(jù)庫用戶名/密碼:root/123456(已配置遠程連接);

Hive的配置文件位于主節(jié)點/opt/module/hive-3.1.2/conf/

Spark任務在Yarn上用Client運行,方便觀察日志;

建議使用gson解析json數(shù)據(jù)。

任務一:離線數(shù)據(jù)采集

編寫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的數(shù)據(jù)增量抽取到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庫中部分表沒有數(shù)據(jù),正常抽取即可)。

1、抽取ds_db01庫中order_master的增量數(shù)據(jù)進入Hive的ods庫中表

order_master。根據(jù)ods.order_master表中modified_time作為增量字段,

只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添加靜態(tài)分區(qū),分區(qū)字段

為etl_date,類型為String,且值為當前比賽日的前一天日期(分區(qū)字段

格式為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsods.order_master

命令,將執(zhí)行結果截圖粘貼至客戶端桌面【Release\模塊B提交結果.docx】

中對應的任務序號下;

2、抽取ds_db01庫中order_detail的增量數(shù)據(jù)進入Hive的ods庫中表

order_detail。根據(jù)ods.order_detail表中modified_time作為增量字段,

只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添加靜態(tài)分區(qū),分區(qū)字段

為etl_date,類型為String,且值為當前比賽日的前一天日期(分區(qū)字段

格式為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsods.order_detail

命令,將執(zhí)行結果截圖粘貼至客戶端桌面【Release\模塊B提交結果.docx】

中對應的任務序號下;

3、抽取ds_db01庫中coupon_info的增量數(shù)據(jù)進入Hive的ods庫中表

coupon_info,根據(jù)ods.coupon_info表中modified_time作為增量字段,

只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添加靜態(tài)分區(qū),分區(qū)字段

為etl_date,類型為String,且值為當前比賽日的前一天日期(分區(qū)字段

格式為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsods.coupon_info

命令,將執(zhí)行結果截圖粘貼至客戶端桌面【Release\模塊B提交結果.docx】

中對應的任務序號下;

4、抽取ds_db01庫中coupon_use的增量數(shù)據(jù)進入Hive的ods庫中表

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

pay_time中的最大者,只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添

加靜態(tài)分區(qū),分區(qū)字段為etl_date,類型為String,且值為當前比賽日的

前一天日期(分區(qū)字段格式為yyyyMMdd)。使用HiveCli查詢最新分區(qū)數(shù)

據(jù)總條數(shù),將執(zhí)行結果截圖粘貼至客戶端桌面【Release\模塊B提交結

果.docx】中對應的任務序號下;

5、抽取ds_db01庫中product_browse的增量數(shù)據(jù)進入Hive的ods庫中表

product_browse,根據(jù)duct_browse表中modified_time作為增量

字段,只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添加靜態(tài)分區(qū),分

區(qū)字段為etl_date,類型為String,且值為當前比賽日的前一天日期(分

區(qū)字段格式為yyyyMMdd)。使用hivecli執(zhí)行showpartitions

duct_browse命令,將執(zhí)行結果截圖粘貼至客戶端桌面【Release\

模塊B提交結果.docx】中對應的任務序號下。

6、抽取ds_db01庫中product_info的增量數(shù)據(jù)進入Hive的ods庫中表

product_info,根據(jù)duct_info表中modified_time作為增量字段,

只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添加靜態(tài)分區(qū),分區(qū)字段

為etl_date,類型為String,且值為當前比賽日的前一天日期(分區(qū)字段

格式為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsduct_info

命令,將執(zhí)行結果截圖粘貼至客戶端桌面【Release\模塊B提交結果.docx】

中對應的任務序號下;

7、抽取ds_db01庫中customer_inf的增量數(shù)據(jù)進入Hive的ods庫中表

customer_inf,根據(jù)ods.customer_inf表中modified_time作為增量字段,

只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添加靜態(tài)分區(qū),分區(qū)字段

為etl_date,類型為String,且值為當前比賽日的前一天日期(分區(qū)字段

格式為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsods.customer_inf

命令,將執(zhí)行結果截圖粘貼至客戶端桌面【Release\模塊B提交結果.docx】

中對應的任務序號下;

8、抽取ds_db01庫中customer_login_log的增量數(shù)據(jù)進入Hive的ods庫中表

customer_login_log,根據(jù)ods.customer_login_log表中l(wèi)ogin_time作為

增量字段,只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添加靜態(tài)分區(qū),

分區(qū)字段為etl_date,類型為String,且值為當前比賽日的前一天日期(分

區(qū)字段格式為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsods.

customer_login_log命令,將執(zhí)行結果截圖粘貼至客戶端桌面【Release\

模塊B提交結果.docx】中對應的任務序號下;

9、抽取ds_db01庫中order_cart的增量數(shù)據(jù)進入Hive的ods庫中表

order_cart,根據(jù)ods.order_cart表中modified_time作為增量字段,只

將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添加靜態(tài)分區(qū),分區(qū)字段為

etl_date,類型為String,且值為當前比賽日的前一天日期(分區(qū)字段格式

為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsods.order_cart命令,

將執(zhí)行結果截圖粘貼至客戶端桌面【Release\模塊B提交結果.docx】中對

應的任務序號下;

10、抽取ds_db01庫中customer_addr的增量數(shù)據(jù)進入Hive的ods庫中表

customer_addr,根據(jù)ods.customer_addr表中modified_time作為增量字

段,只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,同時添加靜態(tài)分區(qū),分區(qū)

字段為etl_date,類型為String,且值為當前比賽日的前一天日期(分區(qū)

字段格式為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsods.

customer_addr命令,將執(zhí)行結果截圖粘貼至客戶端桌面【Release\模塊B

提交結果.docx】中對應的任務序號下;

11、抽取ds_db01庫中customer_level_inf的增量數(shù)據(jù)進入Hive的ods庫

中表customer_level_inf,根據(jù)ods.customer_level_inf表中

modified_time作為增量字段,只將新增的數(shù)據(jù)抽入,字段名稱、類型不變,

同時添加靜態(tài)分區(qū),分區(qū)字段為etl_date,類型為String,且值為當前比

賽日的前一天日期(分區(qū)字段格式為yyyyMMdd)。使用hivecli執(zhí)行show

partitionsods.customer_level_inf命令,將執(zhí)行結果截圖粘貼至客戶端

桌面【Release\模塊B提交結果.docx】中對應的任務序號下。

任務二:實時數(shù)據(jù)采集

1、在主節(jié)點使用Flume采集實時數(shù)據(jù)生成器25001端口的socket數(shù)據(jù)(實時

數(shù)據(jù)生成器腳本為主節(jié)點/data_log目錄下的gen_ds_data_to_socket腳本,

該腳本為Master節(jié)點本地部署且使用socket傳輸),將數(shù)據(jù)存入到Kafka

的Topic中(Topic名稱為ods_mall_log,分區(qū)數(shù)為2,ZK關于Kafka的信

息在其/kafka節(jié)點),使用Kafka自帶的消費者消費ods_mall_log(Topic)

中的數(shù)據(jù),查看Topic中的前1條數(shù)據(jù)的結果,將查看命令與結果完整的截

圖粘貼至客戶端桌面【Release\模塊B提交結果.docx】中對應的任務序號

下;

注:需先啟動已配置好的Flume再啟動腳本,否則腳本將無法成功啟動,啟動

方式為進入/data_log目錄執(zhí)行./gen_ds_data_to_socket(如果沒有權限,請

執(zhí)行授權命令chmod777/data_log/gen_ds_data_to_socket)

2、實時腳本啟動后,在主節(jié)點進入到maxwell-1.29.0的解壓后目錄下(在

/opt/module下),配置相關文件并啟動,讀取主節(jié)點MySQL數(shù)據(jù)的binlog

日志(MySQL的binlog相關配置已完畢,只需要關注ds_realtime_db數(shù)據(jù)

庫的表)到Kafka的Topic中(Topic名稱為ods_mall_data,分區(qū)數(shù)為2,

ZK關于Kafka的信息在其/kafka節(jié)點)。使用Kafka自帶的消費者消費

ods_mall_data(Topic)中的數(shù)據(jù),查看Topic中的前1條數(shù)據(jù)的結果,將

查看命令與結果完整的截圖粘貼至客戶端桌面【Release\模塊B提交結

果.docx】中對應的任務序號下。

模塊C:實時數(shù)據(jù)處理(25分)

環(huán)境說明:

服務端登錄地址詳見各模塊服務端說明。

補充說明:各節(jié)點可通過Asbru工具或SSH客戶端進行SSH訪問;

主節(jié)點MySQL數(shù)據(jù)庫用戶名/密碼:root/123456(已配置遠程連接);

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

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

建議使用gson解析json數(shù)據(jù)。

任務一:實時數(shù)據(jù)清洗

編寫Java工程代碼,使用Flink消費Kafka中Topic為ods_mall_log和

ods_mall_data的數(shù)據(jù)并進行相應的數(shù)據(jù)統(tǒng)計計算(使用ProcessingTime)。

1、使用Flink消費Kafka中topic為ods_mall_data的數(shù)據(jù),根據(jù)數(shù)據(jù)中不同

的表將數(shù)據(jù)分別分發(fā)至kafka的DWD層的fact_order_master、

fact_order_detail的Topic中(只獲取data的內(nèi)容,具體的內(nèi)容格式請自

查,其分區(qū)數(shù)均為2),其他的表則無需處理。使用Kafka自帶的消費者消

費fact_order_master(Topic)的前1條數(shù)據(jù),將結果截圖粘貼至客戶端桌

面【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的數(shù)據(jù),根據(jù)數(shù)據(jù)中不同

的表前綴區(qū)分,過濾出product_browse的數(shù)據(jù),將數(shù)據(jù)分別分發(fā)至kafka

的DWD層log_product_browse的Topic中,其分區(qū)數(shù)為2,其他的表則無需

處理。使用Kafka自帶的消費者消費log_product_browse(Topic)的前1

條數(shù)據(jù),將結果截圖粘貼至客戶端桌面【Release\模塊C提交結果.docx】

中對應的任務序號下。

log_product_browse表結構,存儲位置:Kafka,存儲格式:json

字段類型中文含義備注

(和

MySQL中

相同)

log_idlong自增長id可以使用隨機數(shù)(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條

數(shù)據(jù),查看字段為row_key與shipping_user、查看ods:order_detail表的

任意2條數(shù)據(jù),查看字段為row_key與product_name、查看

ods:product_browse表的任意2條數(shù)據(jù),查看字段為row_key與order_sn。

將結果分別截圖粘貼至客戶端桌面【Release\模塊C提交結果.docx】中對

應的任務序號下(截圖中不能有亂碼)。

三個HBase中的數(shù)據(jù)結構為:

ods:order_master數(shù)據(jù)結構如下:

字段類型中文含義備注

(和

MySQL中

相同)

rowkeystringrowkey可以使用隨機數(shù)(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數(shù)據(jù)結構如下:

字段類型中文含義備注

(和

MySQL中

相同)

rowkeystringrowkey可以使用隨機數(shù)(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數(shù)據(jù)結構如下:

字段類型中文含義備注

(和

MySQL中

相同)

rowkeystringrowkey該字段使用logid進行拆分,

將log_id拆分為隨機數(shù)和

MMddHHmmssSSS兩塊,在其

中插入yyyy(date的格式)

最終格式為:

隨機數(shù)(0-9)+yyyy

+MMddHHmmssSSS

Info列族名

log_idint該字段缺失,使用隨機數(shù)(0-9)+

MMddHHmmssSSS(date的格式)

order_snstring

product_idint

customer_idstring

gen_orderint

modified_timedouble

任務二:實時指標計算

編寫Java工程代碼,使用Flink消費Kafka中dwd層的Topic數(shù)據(jù),表結

構與離線數(shù)據(jù)表結構相同,時間語義使用ProcessingTime。

1、使用Flink消費kafka中l(wèi)og_product_browse主題的數(shù)據(jù),統(tǒng)計商品的UV

(瀏覽用戶量)和PV(商品瀏覽量),將結果寫入HBase中的表ads:

online_uv_pv中。使用Hivecli(沒寫錯)查詢ads.pv_uv_result表按照

product_id和pv進行降序排序,查詢出10條數(shù)據(jù),將結果截圖粘貼至客戶

端桌面【Release\模塊C提交結果.docx】中對應的任務序號下;

其中,表空間為:ads,rowkey為:計算時的年月日時分秒+商品id,列族為:

info,列名為:商品id,商品名稱,uv,pv,modified_time

例:

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

模塊D:離線數(shù)據(jù)處理(20分)

環(huán)境說明:

服務端登錄地址詳見各模塊服務端說明。

補充說明:各節(jié)點可通過Asbru工具或SSH客戶端進行SSH訪問;

主節(jié)點MySQL數(shù)據(jù)庫用戶名/密碼:root/123456(已配置遠程連接);

Hive的配置文件位于主節(jié)點/opt/module/hive-3.1.2/conf/

Spark任務在Yarn上用Client運行,方便觀察日志;

ClickHouse的jdbc連接端口8123,用戶名/密碼:default/123456,

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

建議使用gson解析json數(shù)據(jù)。

任務一:離線數(shù)據(jù)清洗

編寫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,不記錄毫秒數(shù),若原數(shù)據(jù)中只有年月日,則在時分秒的

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

1、抽取ods庫中表customer_inf最新分區(qū)數(shù)據(jù),并結合dim_customer_inf最

新分區(qū)現(xiàn)有的數(shù)據(jù),根據(jù)customer_id合并數(shù)據(jù)到dwd庫中

dim_customer_inf的分區(qū)表(合并是指對dwd層數(shù)據(jù)進行插入或修改,需修

改的數(shù)據(jù)以customer_id為合并字段,根據(jù)modified_time排序取最新的一

條),分區(qū)字段為etl_date且值與ods庫的相對應表該值相等,并添加

dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

四列,其中dwd_insert_user、dwd_modify_user均填寫“user1”。若該條

記錄第一次進入數(shù)倉dwd層則dwd_insert_time、dwd_modify_time均存當

前操作時間,并進行數(shù)據(jù)類型轉換。若該數(shù)據(jù)在進入dwd層時發(fā)生了合并修

改,則dwd_insert_time時間不變,dwd_modify_time存當前操作時間,其

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

當天的數(shù)據(jù),查詢字段為customer_id、customer_email、modified_time、

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

將結果截圖粘貼至客戶端桌面【Release\模塊D提交結果.docx】中對應的

任務序號下;

2、抽取ods庫中表coupon_info最新分區(qū)數(shù)據(jù),并結合dim_coupon_info最新

分區(qū)現(xiàn)有的數(shù)據(jù),根據(jù)coupon_id合并數(shù)據(jù)到dwd庫中dim_coupon_info的

分區(qū)表(合并是指對dwd層數(shù)據(jù)進行插入或修改,需修改的數(shù)據(jù)以coupon_id

為合并字段,根據(jù)modified_time排序取最新的一條),分區(qū)字段為etl_date

且值與ods庫的相對應表該值相等,并添加dwd_insert_user、

dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中

dwd_insert_user、dwd_modify_user均填寫“user1”。若該條記錄第一次

進入數(shù)倉dwd層則dwd_insert_time、dwd_modify_time均存當前操作時間,

并進行數(shù)據(jù)類型轉換。若該數(shù)據(jù)在進入dwd層時發(fā)生了合并修改,則

dwd_insert_time時間不變,dwd_modify_time存當前操作時間,其余列存

最新的值。使用hivecli執(zhí)行showpartitionsdwd.dim_coupon_info命

令,將結果截圖粘貼至客戶端桌面【Release\模塊D提交結果.docx】中對

應的任務序號下;

3、抽取ods庫中表product_info最新分區(qū)的數(shù)據(jù),并結合dim_product_info

最新分區(qū)現(xiàn)有的數(shù)據(jù),根據(jù)product_core合并數(shù)據(jù)到dwd庫中

dim_product_info的分區(qū)表(合并是指對dwd層數(shù)據(jù)進行插入或修改,需修

改的數(shù)據(jù)以product_core為合并字段,根據(jù)modified_time排序取最新的

一條),分區(qū)字段為etl_date且值與ods庫的相對應表該值相等,并添加

dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

四列,其中dwd_insert_user、dwd_modify_user均填寫“user1”。若該條

記錄第一次進入數(shù)倉dwd層則dwd_insert_time、dwd_modify_time均存當

前操作時間,并進行數(shù)據(jù)類型轉換。若該數(shù)據(jù)在進入dwd層時發(fā)生了合并修

改,則dwd_insert_time時間不變,dwd_modify_time存當前操作時間,其

余列存最新的值。使用hivecli執(zhí)行showpartitions

dwd.dim_product_info命令,將結果截圖粘貼至客戶端桌面【Release\模塊

D提交結果.docx】中對應的任務序號下;

4、抽取ods庫中表order_master最新分區(qū)的數(shù)據(jù),并結合HBase中

order_master_offline表中的數(shù)據(jù)合并抽取到dwd庫中fact_order_master

的分區(qū)表,分區(qū)字段為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均填寫當前操作時間(年月日必須是今

天,時分秒只需在比賽時間范圍內(nèi)即可),抽取HBase中的數(shù)據(jù)時,只抽取

2022年10月01日的數(shù)據(jù)(以rowkey為準),并進行數(shù)據(jù)類型轉換。使用

hivecli查詢modified_time為2022年10月01日當天的數(shù)據(jù),查詢字段

為order_id、order_sn、shipping_user、create_time、shipping_time,

并按照order_id進行升序排序,將結果截圖復制粘貼至客戶端桌面

【Release\模塊D提交結果.docx】中對應的任務序號下;

ods:order_master_offline數(shù)據(jù)結構如下:

字段類型中文含義備注

rowkeystringrowkey隨機數(shù)(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表最新分區(qū)的數(shù)據(jù),并結合HBase中

order_detail_offline表中的數(shù)據(jù)合并抽取到dwd庫中fact_order_detail

的分區(qū)表,分區(qū)字段為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均填寫當前操作時間(年月日必須是今

天,時分秒只需在比賽時間范圍內(nèi)即可),抽取HBase中的數(shù)據(jù)時,只抽取

2022年10月01日的數(shù)據(jù)(以rowkey為準),并進行數(shù)據(jù)類型轉換。使用

hivecli查詢modified_time為2022年10月01日當天的數(shù)據(jù),查詢字段

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

order_detail_id進行升序排序,將結果截圖粘貼至客戶端桌面【Release\

模塊D提交結果.docx】中對應的任務序號下;

ods:order_detail_offline數(shù)據(jù)結構如下:

字段類型中文含義備注

rowkeystringrowkey隨機數(shù)(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最新分區(qū)的數(shù)據(jù)到dwd庫中fact_coupon_use

的分區(qū)表,分區(qū)字段為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均填寫當前操作時間(年月日必須是今

天,時分秒只需在比賽時間范圍內(nèi)即可),并進行數(shù)據(jù)類型轉換。使用hive

cli執(zhí)行showpartitionsdwd.fact_coupon_use命令,將結果截圖粘貼至

客戶端桌面【Release\模塊D提交結果.docx】中對應的任務序號下;

7、抽取ods庫中表customer_login_log最新分區(qū)的數(shù)據(jù)到dwd庫中

log_customer_login的分區(qū)表,分區(qū)字段為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

均填寫當前操作時間(年月日必須是今天,時分秒只需在比賽時間范圍內(nèi)即

可),并進行數(shù)據(jù)類型轉換。使用hivecli執(zhí)行showpartitions

dwd.log_customer_login命令,將結果截圖粘貼至客戶端桌面【Release\

模塊D提交結果.docx】中對應的任務序號下;

8、抽取ods庫中表order_cart最新分區(qū)的數(shù)據(jù)到dwd庫中fact_order_cart

的分區(qū)表,分區(qū)字段為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均填寫當前操作時間(年月日必須是今

天,時分秒只需在比賽時間范圍內(nèi)即可),并進行數(shù)據(jù)類型轉換。使用hive

cli執(zhí)行showpartitionsdwd.fact_order_cart命令,將結果截圖粘貼至

客戶端桌面【Release\模塊D提交結果.docx】中對應的任務序號下;

9、抽取ods庫中表product_browse最新分區(qū)的數(shù)據(jù),并結合HBase中

product_browse_offline表中的數(shù)據(jù)合并抽取到dwd庫中

log_product_browse的分區(qū)表,分區(qū)字段為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

均填寫當前操作時間(年月日必須是今天,時分秒只需在比賽時間范圍內(nèi)即

可),抽取HBase中的數(shù)據(jù)時,只抽取2022年10月01日的數(shù)據(jù)(以rowkey

為準),并進行數(shù)據(jù)類型轉換。使用hivecli查詢modified_time為2022

年10月01日當天的數(shù)據(jù),查詢字段為log_id、product_id、order_sn、

modified_time,并按照log_id進行升序排序,將結果截圖粘貼至客戶端桌

面【Release\模塊D提交結果.docx】中對應的任務序號下;

ods:product_browse_offline數(shù)據(jù)結構如下:

字段類型中文含義備注

rowkeystringrowkey隨機數(shù)(0-9)

+MMddHHmmssSSS

Info列族名

log_idint

product_idint

customer_idstring

gen_orderint

order_snstring

modified_timedouble

10、抽取ods庫中表customer_level_inf最新分區(qū)的數(shù)據(jù)到dwd庫中

dim_customer_level_inf的分區(qū)表,分區(qū)字段為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

均填寫當前操作時間(年月日必須是今天,時分秒只需在比賽時間范圍內(nèi)即

可),并進行數(shù)據(jù)類型轉換。使用hivecli執(zhí)行showpartitionsdwd.

dim_customer_level_inf命令,將結果截圖粘貼至客戶端桌面【Release\

模塊D提交結果.docx】中對應的任務序號下;

11、抽取ods庫中表customer_addr最新分區(qū)的數(shù)據(jù)到dwd庫中

dim_customer_addr的分區(qū)表,分區(qū)字段為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均填寫當前操作時間(年

月日必須是今天,時分秒只需在比賽時間范圍內(nèi)即可),并進行數(shù)據(jù)類型轉

換。使用hivecli執(zhí)行showpartitionsdwd.dim_customer_addr命令,

將結果截圖粘貼至客戶端桌面【Release\模塊D提交結果.docx】中對應的

任務序號下;

12、將dwd庫中dim_customer_inf、dim_customer_addr、

dim_customer_level_inf表的數(shù)據(jù)關聯(lián)到dws庫中

customer_addr_level_aggr的分區(qū)表,分區(qū)字段為etl_date,類型為String,

且值為當前比賽日的前一天日期(分區(qū)字段格式為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均填寫當前操作時間(年月日必須是今

天,時分秒只需在比賽時間范圍內(nèi)即可),并進行數(shù)據(jù)類型轉換。使用hive

cli統(tǒng)計最新分區(qū)中的數(shù)據(jù)總量,將結果截圖粘貼至客戶端桌面【Release\

模塊D提交結果.docx】中對應的任務序號下。

任務二:離線指標計算

1、編寫Scala工程代碼,根據(jù)dwd的訂單表dwd.fact_order_master,求各省

份下單時間為2022年的支付轉化率,并將計算結果按照下述表結構寫入

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

令行中根據(jù)ranking字段查詢出轉化率前三的省份,將SQL語句與執(zhí)行結果

截圖粘貼至客戶端桌面【Release\模塊D提交結果.docx】中對應的任務序

號下;

注:支付轉化率=完成支付的訂單數(shù)/已下單數(shù)。

payment_cvr表結構:

字段類型中文含義備注

provincestring省份名

creat_orderint已下單數(shù)

paymentint已支付的訂單數(shù)

payCVRfloat64支付轉化率四舍五入保留三位小數(shù)

rankingint轉化率排名

模塊E:數(shù)據(jù)可視化(15

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論