版權說明:本文檔由用戶提供并上傳,收益歸屬內(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廠長勞動合同簽訂與勞動爭議調(diào)解協(xié)議4篇
- 2025年度體育設施承包經(jīng)營協(xié)議范本3篇
- 二零二五新春企業(yè)復工環(huán)境保護合同2篇
- 2025年度環(huán)保型產(chǎn)品宣傳冊創(chuàng)意設計制作服務合同4篇
- 2025年廠房租賃合同智能化管理版4篇
- 個人二手車輛交易合同2024年專用
- 2025年度文化遺產(chǎn)地拆遷產(chǎn)權保護協(xié)議4篇
- 2025年度智能安防產(chǎn)品委托設計合同4篇
- 2025不動產(chǎn)交易擔保合同范本3篇
- 兩地研學合作協(xié)議合同范本 2篇
- GB/T 12494-1990食品機械專用白油
- 運輸供應商年度評價表
- 成熙高級英語聽力腳本
- 北京語言大學保衛(wèi)處管理崗位工作人員招考聘用【共500題附答案解析】模擬試卷
- 肺癌的診治指南課件
- 人教版七年級下冊數(shù)學全冊完整版課件
- 商場裝修改造施工組織設計
- (中職)Dreamweaver-CC網(wǎng)頁設計與制作(3版)電子課件(完整版)
- 統(tǒng)編版一年級語文上冊 第5單元教材解讀 PPT
- 加減乘除混合運算600題直接打印
- ASCO7000系列GROUP5控制盤使用手冊
評論
0/150
提交評論