2023年山東省職業(yè)院校技能大賽高職組“大數(shù)據(jù)應(yīng)用開發(fā)”賽項任務(wù)書_第1頁
2023年山東省職業(yè)院校技能大賽高職組“大數(shù)據(jù)應(yīng)用開發(fā)”賽項任務(wù)書_第2頁
2023年山東省職業(yè)院校技能大賽高職組“大數(shù)據(jù)應(yīng)用開發(fā)”賽項任務(wù)書_第3頁
2023年山東省職業(yè)院校技能大賽高職組“大數(shù)據(jù)應(yīng)用開發(fā)”賽項任務(wù)書_第4頁
2023年山東省職業(yè)院校技能大賽高職組“大數(shù)據(jù)應(yīng)用開發(fā)”賽項任務(wù)書_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年山東省職業(yè)院校技能大賽

高職組

“大數(shù)據(jù)應(yīng)用開發(fā)”

賽項

務(wù)

參賽隊編號:

背景描述

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

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

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

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

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

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

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

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

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

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

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

通過不同標(biāo)簽組合運用,獲得不同目標(biāo)群體,以此開展精準(zhǔn)推送。

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

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

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

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

分析及可視化呈現(xiàn),你們作為該小組的技術(shù)人員,請按照下面任務(wù)完

成本次工作。

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

環(huán)境說明:

服務(wù)端登錄地址詳見各模塊服務(wù)端說明。

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

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

擇對應(yīng)的安裝包進行安裝,用不到的可忽略;

所有模塊中應(yīng)用命令必須采用絕對路徑;

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

dockerexec-itmaster/bin/bash

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

dockerexec-itslavel/bin/bash

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

dockerexec-itslave2/bin/bash

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

任務(wù)一:Hadoop完全分布式安裝配置

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

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

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

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

結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

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

粘貼至客戶端桌面【Roloas。'模塊A提交結(jié)果.docx]中對應(yīng)的任務(wù)序號下;

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

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

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

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

模塊A提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

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

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

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

粘貼至客戶端桌面【Release'模塊A提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

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

【Release'模塊A提交結(jié)果.docx]中對應(yīng)的任務(wù)序號下。

任務(wù)二:HBase分布式部署

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

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

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

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

粘貼至客戶端桌面【Release'模塊A提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

制并粘貼至客戶端桌面【Release'模塊A提交結(jié)果.docx】中對應(yīng)的任務(wù)序

號下;

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

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

命令hbaseversion,將全部復(fù)制命令復(fù)制并將hbascversion命令的結(jié)果

截圖粘貼至客戶端桌面【Release'模塊A提交結(jié)果.docx】中對應(yīng)的任務(wù)序

號下;

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

客戶端桌面【Release'模塊A提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;正常

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

客戶端桌面【Release'模塊A提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下。

任務(wù)三:ClickHouse單機部署

本環(huán)節(jié)需要使用root用戶完成相關(guān)配置,具體要求如下:

1、將容器Master節(jié)點ClickHouse相關(guān)安裝包解壓到/opt/module/clickhDuse

目錄下(若路徑不存在,則需新建),將全軌解壓命令復(fù)制并粘貼至客戶端

桌面【Release'模塊A提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

2、執(zhí)行啟動各個相關(guān)腳本,將全部啟動命令復(fù)制并將執(zhí)行結(jié)果(截取結(jié)果最后

倒數(shù)15行即可)截圖粘貼至客戶端桌面【Release'模塊A提交結(jié)果.docx】

中對應(yīng)的任務(wù)序號下;

3、設(shè)置遠程訪問并移除默認監(jiān)聽文件(),同時由于9000端口被Hadoop占用,

需要將clickhouse的端口更改為9001,將上述要求的設(shè)置遠程訪問配置文

件配置截圖、端口更改后配置文件配置復(fù)制并粘貼至客戶端桌面【Release'

模塊A提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

4、啟動clickhouse,啟動后查看clickhouse運行狀態(tài),并將啟動命令復(fù)制、

查看運行狀態(tài)命令復(fù)制并將執(zhí)行結(jié)果截圖粘貼至客戶端桌面【Release'模塊

A提交結(jié)果.docx]中對應(yīng)的任務(wù)序號下。

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

環(huán)境說明:

服務(wù)端登錄地址詳見各模塊服務(wù)端說明。

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

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

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

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

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

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

編寫Scala工程代碼,將MySQL的ds_db01庫中表ordejmaster、

order_detail>coupon_info、coupon_use、product_browse^product_info>

customer_inf>customer_login_log、order_cart、customer_level_iEf、

customer_addr的數(shù)據(jù)增量抽取到Hive的ods庫中對應(yīng)表order_master>

order_detamcoupon_info、coupon_use.product_browsesproduct_info^

customer_inf、customer_login_log、order_cart、customer_level_inf、

customer_addr中(ods庫中部分表沒有數(shù)據(jù),正常抽取即可)。

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

ordermaster。根據(jù)master表中modifiedtime作為增量字段,只將新增

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

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

使用hivecli執(zhí)行showpartitions_master命令,將執(zhí)行結(jié)果截圖粘貼

至客戶端桌面【Release、模塊B提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

orderdetailo根據(jù)detail表中modifiedtimo作為增量字段,只將新增

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

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

使用hivecli執(zhí)行showpartitions_detail命令,將執(zhí)行結(jié)果截圖粘貼

至客戶端桌面【Release、模塊B提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

coupon_info,根據(jù)n_info表中modified_time作為增量字段,只將新增的

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

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

使用hivecli執(zhí)行showpartitionsn_info命令,將執(zhí)行結(jié)果截圖粘貼至

客戶端桌面【Release、模塊B提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

coupon_use,增量字段取n_use表中g(shù)et_time、used_time、pay_time中的

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

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

區(qū)字段格式為yyyyMMdd)o使用HiveCli查詢最新分區(qū)數(shù)據(jù)總條數(shù),將執(zhí)

行結(jié)果截圖粘貼至客戶端桌面【Release、模塊B提交結(jié)果.docx】中對應(yīng)的

任務(wù)序號下;

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

product_browse,根據(jù)ct_browse表中modified_time作為增量字段,只將

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

etl.date,類型為String,且值為當(dāng)前比賽日的前一天日期(分區(qū)字段格式

為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsct_browse命令,將

執(zhí)行結(jié)果截圖粘貼至客戶端桌面【Release、模塊B提交結(jié)果.docx】中對應(yīng)

的任務(wù)序號下。

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

product_info,根據(jù)ct_info表中mod據(jù)ied_time作為增量字段,只將新增

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

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

使用hivecli執(zhí)行showpartitionsct_info命令,將執(zhí)行結(jié)果截圖粘貼

至客戶端桌面【Release、模塊B提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

customer_inf,根據(jù)mejinf表中modified」imc作為增量字段,只將新增

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

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

使用hivecli執(zhí)行showpartitionsmer_inf命令,將執(zhí)行結(jié)果截圖粘貼

至客戶端桌面【Release、模塊B提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

customer」ogin_log,根據(jù)mcr_login_log表中l(wèi)ogin_timc作為增量字段,

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

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

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

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

模塊B提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

order_cart,根據(jù)_cart表中modifiedtime作為增量字段,只將新增的數(shù)

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

類型為Siring,且值為當(dāng)前比賽日的前一天日期(分區(qū)字段格式為yyyyMMdd)。

使用hivecli執(zhí)行showpartitions_cart命令,將執(zhí)行結(jié)果截圖粘貼至

客戶端桌面【Release、模塊B提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

customer_addr,根據(jù)mejaddr表中modificd_time作為增量字段,只將新

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

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

為yyyyMMdd)。使用hivecli執(zhí)行showpartitionsods.customer_addr

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

中對應(yīng)的任務(wù)序號下;

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

中表customer」eveLinf,根據(jù)mer_level_inf表中modified_time作為增

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

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

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

mer_level_inf命令,將執(zhí)行結(jié)果截圖粘貼至客戶端桌面【Rela冰e\模塊R

提交結(jié)果.docx】o對應(yīng)的任務(wù)序號下。

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

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

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

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

的Topic中(Topic名稱為ods」nall_log,分區(qū)數(shù)為2,ZK關(guān)于Kafka的信

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

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

圖粘貼至客戶端桌面【Release'模塊B提交結(jié)果.docx】中對應(yīng)的任務(wù)序號

下;

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

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

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

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

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

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

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

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

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

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

果.docx】中對應(yīng)的任務(wù)序號下。

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

環(huán)境說明:

服務(wù)端登錄地址詳見各模塊服務(wù)端說明。

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

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

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

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

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

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

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

odsmalldata的數(shù)據(jù)并進行相應(yīng)的數(shù)據(jù)統(tǒng)計計算(使用ProcessingTime)o

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ù),將結(jié)果截圖粘貼至客戶端桌

面【Release'模塊C提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

factordermaster表結(jié)構(gòu),存儲位置:Ka珠a,存儲格式:json

字段類型中文含義(和備注

MySQL中相同)

orderjdint

order_snstring

customerjdint

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_detai1表結(jié)構(gòu),存儲位置:Kafka,存儲格式:json

字段類型中文含義(和備注

MySQL中相同)

order_detail_idint

order_snstring

productjdint

product_namestring

product_cntint

product_pricedouble

average_costdouble

weightdouble

fee_moneydouble

w_idint

create_timetimestamp

modified_timetimestamp

2、使用Flink消費Kafka中topic為ods_mall」og的數(shù)據(jù),根據(jù)數(shù)據(jù)中不同

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

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

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

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

中對應(yīng)的任務(wù)序號下。

log_product_browse未結(jié)構(gòu),存儲位置:Kafka,存儲格式:json

字段類型中文含義備注

(和

MySQL中

相同)

log_idlong自增長id可以使用隨機數(shù)(0-9)

+MMddHHmmssSSS代

productjdstring

customerjdint

gen_orderint

order_snstring

modified_timetimestamp

3、在任務(wù)1、2進行的同時,需要將order_masterorder_detail>

product_browse備份至HBase中(若Int類型長度不夠,可使用Biglnt或

Long類型代替),使用HBaseShell查看ods:ordermaster表的任意2條

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

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

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

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

應(yīng)的任務(wù)序號下(截圖中不能有亂碼)。

三個HBase中的數(shù)據(jù)結(jié)構(gòu)為:

ods:ordermaster數(shù)據(jù)結(jié)構(gòu)如下:

字段類型中文含義備注

(和

MySQ-中

相同)

rowkeystringrowkey可以使用隨機數(shù)(0-9)

+yyyyMMddHHmmssSSS

(date的格式)代替

Info列族名

orderjdint

order_snstring

customerjdint

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ù)結(jié)構(gòu)如下:

字段注型.中文含義備注

(和

MySQL中

相同)

rowkeystringrowkey可以使用隨機數(shù)(0-9)

+yyyyMMddHHmmssSSS

(date的格式)代替

Info列族名

order_detail_idint

order_snstring

productjdint

product_namestring

product_cntint

product_pricedouble

average_costdouble

weightdouble

fee_moneydouble

w_idint

create_timestring

modified_timestring

ods:product,browse數(shù)據(jù)結(jié)構(gòu)如下:

字段類型中文含義備注

(和

MySQL中

相同)

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

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

MMddHHmmssSSS兩塊,在其

中插入yyyy(date的格式)

最終格式為:

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

+MMddHHmmssbbb

Info列族名

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

MMddHHmmssSSS(date的格式)

order_snstring

productjdint

customerjdstring

gen_orderint

modified_timedouble

任務(wù)二:實時指標(biāo)計算

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

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

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

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

online_uv_pv中。使用Hivecli(沒寫錯)查詢_uv_result表按照product_id

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

【Release'模塊C提交結(jié)果.docx]中對應(yīng)的任務(wù)序號下;

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

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

例:

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

2、使用Flink消費kafka中fact_order_detai1主題的數(shù)據(jù),統(tǒng)計商城每分鐘

的GMV(結(jié)果四舍五人保留兩位小數(shù)),將結(jié)果存入redis中(value為字

符串格式,僅存GMV),key為store_gmv,使用rediscli以getkey方式

獲取st.cra_gmv侑,將每次截圖粘貼至客戶端桌面【Reiaase\模塊C提交結(jié)

果.docx】中對應(yīng)的任務(wù)序號下(每分鐘查詢一次,至少查詢3次)。

(GMV:所有訂單金額,購買商品單價*購買商品數(shù)量,包括已下單未付款)

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

環(huán)境說明:

服務(wù)端登錄地址詳見各模塊服務(wù)端說明。

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

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

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

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

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

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

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

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

編寫Scala工程代碼,將ods庫中表ordejmaster、order_detail.

coupon_info、coupon_use>product_browse>product_info^customer_inf.

customer_login_logsordejcart、customcr_levcl_infcustomcjaddr抽取

到Hive的dwd庫中對■應(yīng)表中。表中有涉及到timestamp類型的,均要求按照

yyyy-MM-ddHH:mm:ss,不記錄毫秒數(shù),若原數(shù)據(jù)中只有年月日,則在時分秒的

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

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

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

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

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

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

dwd_insert_user^dwd_insert_timexdwd_modify_user>dwd_modify_time

四列,其中dwd_insert_user^dwd_modify_user均填寫"userl”。若該條

記錄第一次進入數(shù)倉dwd層則dwdinsert,time、dwdmodifytime均存當(dāng)

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

改,則dwd_insert_time時間不變,dwd_modify_time存當(dāng)前操作時間,其

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

當(dāng)天的數(shù)據(jù),查詢字段為customer」d、customer_emaiKmodified_timex

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

將結(jié)果截圖粘貼至客戶端桌面【Release'模塊D提交結(jié)果.docx】中對應(yīng)的

任務(wù)序號下;

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

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

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

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

且值與ods庫的相對應(yīng)表該值相等,并添加dwd_insert_user、

dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中

dwd_insert_user^dwd_modify_user均填寫“userl"。若該條記錄第一次

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

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

dwd_insert_time時間不變,dwd_modify_ti,Tie存當(dāng)前操作時間,其余列存

最新的值。使用hivecli執(zhí)行showpartitions_coupon_info命令,將結(jié)

果截圖粘貼至客戶端桌面【Release'模塊D提交結(jié)果.docx】中對應(yīng)的任務(wù)

序號下;

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

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

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

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

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

dwdinsert_usersdwd_insert_time、dwd_modify_user^dwdmodify」ime

四列,其中dwd_insert_user.dwd_modify_user均填寫“userl”c若該條

記錄第一次進入數(shù)倉dwd層則dwdinsert.time、dwdmodifytime均存當(dāng)

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

改,則dwd_insert_time時間不變,dwd_modify_time存當(dāng)前操作時間,其

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

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

應(yīng)的任務(wù)序號下;

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

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

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

加dwd_insert_user、dwd_insert_time、dwd_niodify_user、dwd_modify_time

四列,其中dwd_in.9ert_user、dwdmodifyuser均填寫“iiserl”,

dwd_insert_time^dwd_modify_time均填寫當(dāng)前操作時間(年月日必須是今

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

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

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

為order_id.order_sn.shipping_user^create_time.shipping]ime,

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

【Release'模塊D提交結(jié)果.docx]中對應(yīng)的任務(wù)序號下;

ods:order_master_offline數(shù)據(jù)結(jié)構(gòu)如下:

字段類型中文含義備注

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

+yyyyMMddHHmmssSSS(date的

格式)

Info列族名

orderjdint

order_snstring

customerjdint

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

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

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

加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

四列,其中dwd_insert_user、dwd_modify_user均填寫“userl,

dwd_insert_time^dwd_modify_timc均填寫當(dāng)前操作時間(年月日必須是今

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

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

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

為order_detail_idordejsn、product_name、create_time,并按照

order_detail_id進行升序排序,將結(jié)果截圖粘貼至客戶端桌面[ReleaseX

模塊D提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

ods:order_detail_offline數(shù)據(jù)結(jié)構(gòu)如下:

字段類型中文含義備注

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

+yyyyMMddHHmmssSSS(date的

格式)

Info列族名

order_detail_idint

order_snstring

productjdint

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ū)字段為ell.dale且值與0ds庫的相對應(yīng)表該值相等,并添

加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

四列,其中dwd_insert_user.dwd_modify_user均填寫“userl,

dwdinserttime、dwdmodifytime均填寫當(dāng)前操作時間(年月日必須是今

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

cli執(zhí)行showpartitions_coupon_use命令,將結(jié)果截圖粘貼至客戶端桌

面【Release'模塊D提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

log_customer_login的分區(qū)表,分區(qū)字段為etl_date且值與ods庫的相對

應(yīng)表該值相等,并添加dwd_insert_user、dwd_insert_time、

dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、

dwd_modify_user均填寫"userl",dwd_insert_time^dwd_modify_time

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

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

_customer_login命令,將結(jié)果截圖粘貼至客戶端桌面【Release'模塊D提

交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

的分區(qū)表,分區(qū)字段為elLdate且值與ods庫的相對應(yīng)表該值相等,并添

加dwd_insert_uscr>dwd_insert_timc>dwd_modify_user^dwd_inodify_timc

四列,其中dwd_insert_user、dwd_modify_user均填寫“userl,

dwd_insert_time^dwd_modify_time均填寫當(dāng)前操作時間(年月日必須是今

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

cli執(zhí)行showpartitions_order_cart命令,將結(jié)果截圖粘貼至客戶端桌

面【Release'模塊D提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

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

log_producLbrowse的分區(qū)表,分區(qū)字段為etldcile且值與ods庫的相對

應(yīng)表該值相等,并添加dwd_insert_user、dwd_insert_time、

dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、

dwd_modify_user均填寫“userl",dwd_insert_time^dwd_modify_time

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

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

為準(zhǔn)),并進行數(shù)據(jù)類型轉(zhuǎn)換。使用hivecli查詢modified^time為2022

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

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

面【Release'模塊D提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

ods:product_browse_offIine數(shù)據(jù)結(jié)構(gòu)如下:

字段類型中文含義備注

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

+MMddHHmmssSSS

Info列族名

logjdint

productjdint

customerjdstring

gen_orderint

order_snstring

modified_timedouble

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

dim_custonier_level_inf的分區(qū)表,分區(qū)字段為etl_date且值與ods庫的

相對應(yīng)表該值相等,并添加dwd_insert__user、dwd_insert_time、

dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、

dwd_modify_user均填寫“userl”,dwd_insert_time^dwd_modify_time

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

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

dim_customer_level_inf命令,將結(jié)果截圖粘貼至客戶端桌面【Release'

模塊D提交結(jié)果.docx】中對應(yīng)的任務(wù)序號下;

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

dim_customer_addr的分區(qū)表,分區(qū)字段為etl_date且值與ods庫的相對應(yīng)

表該值相等,并添加dwd_insert_user^dwd_insert_time.dwd_modi^_userx

dwd_modify_time四列,其中dwd_insert_userxdwd_modify_user均填寫

“userl”,dwd_insert_timedwd_modify_time均填寫當(dāng)前操作時間(年

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

換。使用hivecli執(zhí)行showpartitions_customer_addr命令,將結(jié)果截

圖粘貼至客戶端桌面【Release'模塊D提交結(jié)果.docx】中對應(yīng)的任務(wù)序號

下;

12、將dwd庫中dim_customer_inf、dim_customer_addr、

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

customeraddrlevelaggr的分區(qū)表,分區(qū)字段為etldate,類型為String,

且值為當(dāng)前比賽日

溫馨提示

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

評論

0/150

提交評論