版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公空間轉(zhuǎn)租合同2025年標(biāo)準(zhǔn)版
- 2025年河北省公需課學(xué)習(xí)-國民營養(yǎng)計劃實施方案394
- 2025年高考物理試卷真題及答案
- 教師考編會計試卷及答案
- 全鎮(zhèn)聯(lián)考模擬試題及答案
- 能源交易員考試題及答案
- 渠道雙方合作合同范本
- 個人用工合同范本
- 湖北生物地理中考試題及答案
- 平安壽險的測試題及答案
- 保健食品及其原料安全性毒理學(xué)檢驗與評價技術(shù)指導(dǎo)原則
- 建筑企業(yè)經(jīng)營管理課件
- 數(shù)字化轉(zhuǎn)型賦能高校課程思政的實施進路與評價創(chuàng)新
- 捷盟-03-京唐港組織設(shè)計與崗位管理方案0528-定稿
- 基于SystemView的數(shù)字通信仿真課程設(shè)計
- 物業(yè)二次裝修管理規(guī)定
- GB 10133-2014食品安全國家標(biāo)準(zhǔn)水產(chǎn)調(diào)味品
- FZ/T 92023-2017棉紡環(huán)錠細紗錠子
- 采氣工程課件
- 工時的記錄表
- 金屬材料與熱處理全套ppt課件完整版教程
評論
0/150
提交評論