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

下載本文檔

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

文檔簡(jiǎn)介

背景描述

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

式中,缺乏數(shù)據(jù)積累,人們?cè)谧龀鲆恍Q策行為過(guò)程中,更多是憑借

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

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

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

者購(gòu)買(mǎi)產(chǎn)品的花費(fèi)、選擇產(chǎn)品的渠道、偏好產(chǎn)品的類型、產(chǎn)品回購(gòu)周

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

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

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

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

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

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

因數(shù)據(jù)驅(qū)動(dòng)的零售新時(shí)代已經(jīng)到來(lái),沒(méi)有大數(shù)據(jù),我們無(wú)法為消

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

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

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

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

任務(wù)完成本次工作。

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

環(huán)境說(shuō)明:

服務(wù)端登錄地址詳見(jiàn)各模塊服務(wù)端說(shuō)明。

補(bǔ)充說(shuō)明:宿主機(jī)可通過(guò)Asbru工具或SSH客戶端進(jìn)行SSH訪問(wèn);

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

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

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

進(jìn)入Master節(jié)點(diǎn)的方式為

dockerexec-itmaster/bin/bash

進(jìn)入Slave1節(jié)點(diǎn)的方式為

dockerexec-itslave1/bin/bash

進(jìn)入Slave2節(jié)點(diǎn)的方式為

dockerexec-itslave2/bin/bash

三個(gè)容器節(jié)點(diǎn)的root密碼均為123456

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

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

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

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

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

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

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

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

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

3、請(qǐng)完成host相關(guān)配置,將三個(gè)節(jié)點(diǎn)分別命名為master、slave1、slave2,

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

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

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

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

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

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

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

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

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

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

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

【Release\模塊A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。

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

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

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

1、確認(rèn)是否完成Hadoop和ZooKeeper的分布式安裝部署,若沒(méi)有請(qǐng)進(jìn)行安裝

部署并啟動(dòng)。完成部署后在三個(gè)節(jié)點(diǎn)分別使用jps命令,并將結(jié)果分別截圖

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

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

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

號(hào)下;

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

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

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

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

號(hào)下;

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

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

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

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

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

環(huán)境說(shuō)明:

服務(wù)端登錄地址詳見(jiàn)各模塊服務(wù)端說(shuō)明。

補(bǔ)充說(shuō)明:各節(jié)點(diǎn)可通過(guò)Asbru工具或SSH客戶端進(jìn)行SSH訪問(wèn);

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

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

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

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

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

編寫(xiě)Scala工程代碼,將MySQL的ds_db01庫(kù)中表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庫(kù)中對(duì)應(yīng)表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庫(kù)中部分表沒(méi)有數(shù)據(jù),正常抽取即可)。

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

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

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

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

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

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

中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

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

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

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

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

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

中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

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

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

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

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

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

中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

coupon_use,增量字段取ods.coupon_use表中g(shù)et_time、used_time、

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

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

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

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

果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

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

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

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

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

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

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

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

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

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

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

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

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

中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

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

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

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

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

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

中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

桌面【Release\模塊B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。

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

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

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

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

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

息在其/kafka節(jié)點(diǎn)),使用Kafka自帶的消費(fèi)者消費(fèi)ods_mall_log(Topic)

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

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

下;

注:需先啟動(dòng)已配置好的Flume再啟動(dòng)腳本,否則腳本將無(wú)法成功啟動(dòng),啟動(dòng)

方式為進(jìn)入/data_log目錄執(zhí)行./gen_ds_data_to_socket(如果沒(méi)有權(quán)限,請(qǐng)

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

2、實(shí)時(shí)腳本啟動(dòng)后,在主節(jié)點(diǎn)進(jìn)入到maxwell-1.29.0的解壓后目錄下(在

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

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

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

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

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

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

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

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

環(huán)境說(shuō)明:

服務(wù)端登錄地址詳見(jiàn)各模塊服務(wù)端說(shuō)明。

補(bǔ)充說(shuō)明:各節(jié)點(diǎn)可通過(guò)Asbru工具或SSH客戶端進(jìn)行SSH訪問(wèn);

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

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

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

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

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

編寫(xiě)Java工程代碼,使用Flink消費(fèi)Kafka中Topic為ods_mall_log和

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

1、使用Flink消費(fèi)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ǐng)自

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

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

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

fact_order_master表結(jié)構(gòu),存儲(chǔ)位置:Kafka,存儲(chǔ)格式: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表結(jié)構(gòu),存儲(chǔ)位置:Kafka,存儲(chǔ)格式: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消費(fèi)Kafka中topic為ods_mall_log的數(shù)據(jù),根據(jù)數(shù)據(jù)中不同

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

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

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

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

中對(duì)應(yīng)的任務(wù)序號(hào)下。

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

字段類型中文含義備注

(和

MySQL中

相同)

log_idlong自增長(zhǎng)id可以使用隨機(jī)數(shù)(0-9)

+MMddHHmmssSSS代

product_idstring

customer_idint

gen_orderint

order_snstring

modified_timetimestamp

3、在任務(wù)1、2進(jìn)行的同時(shí),需要將order_master、order_detail、

product_browse備份至HBase中(若Int類型長(zhǎng)度不夠,可使用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。

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

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

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

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

字段類型中文含義備注

(和

MySQL中

相同)

rowkeystringrowkey可以使用隨機(jī)數(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ù)結(jié)構(gòu)如下:

字段類型中文含義備注

(和

MySQL中

相同)

rowkeystringrowkey可以使用隨機(jī)數(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ù)結(jié)構(gòu)如下:

字段類型中文含義備注

(和

MySQL中

相同)

rowkeystringrowkey該字段使用logid進(jìn)行拆分,

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

MMddHHmmssSSS兩塊,在其

中插入yyyy(date的格式)

最終格式為:

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

+MMddHHmmssSSS

Info列族名

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

MMddHHmmssSSS(date的格式)

order_snstring

product_idint

customer_idstring

gen_orderint

modified_timedouble

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

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

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

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

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

online_uv_pv中。使用Hivecli(沒(méi)寫(xiě)錯(cuò))查詢ads.pv_uv_result表按照

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

端桌面【Release\模塊C提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

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

例:

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

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

環(huán)境說(shuō)明:

服務(wù)端登錄地址詳見(jiàn)各模塊服務(wù)端說(shuō)明。

補(bǔ)充說(shuō)明:各節(jié)點(diǎn)可通過(guò)Asbru工具或SSH客戶端進(jìn)行SSH訪問(wèn);

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

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

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

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

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

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

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

編寫(xiě)Scala工程代碼,將ods庫(kù)中表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庫(kù)中對(duì)應(yīng)表中。表中有涉及到timestamp類型的,均要求按照

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

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

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

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

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

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

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

dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

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

記錄第一次進(jìn)入數(shù)倉(cāng)dwd層則dwd_insert_time、dwd_modify_time均存當(dāng)

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

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

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

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

dwd_insert_time、dwd_modify_time,并按照customer_id進(jìn)行升序排序,

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

任務(wù)序號(hào)下;

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

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

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

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

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

dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中

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

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

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

dwd_insert_time時(shí)間不變,dwd_modify_time存當(dāng)前操作時(shí)間,其余列存

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

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

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

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

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

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

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

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

dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

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

記錄第一次進(jìn)入數(shù)倉(cāng)dwd層則dwd_insert_time、dwd_modify_time均存當(dāng)

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

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

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

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

D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

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

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

加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)“user1”,

dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間(年月日必須是今

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

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

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

為order_id、order_sn、shipping_user、create_time、shipping_time,

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

【Release\模塊D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

字段類型中文含義備注

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

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

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

加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)“user1”,

dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間(年月日必須是今

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

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

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

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

order_detail_id進(jìn)行升序排序,將結(jié)果截圖粘貼至客戶端桌面【Release\

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

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

字段類型中文含義備注

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

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

加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)“user1”,

dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間(年月日必須是今

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

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

客戶端桌面【Release\模塊D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

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

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

dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、

dwd_modify_user均填寫(xiě)“user1”,dwd_insert_time、dwd_modify_time

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

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

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

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

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

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

加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time

四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)“user1”,

dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間(年月日必須是今

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

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

客戶端桌面【Release\模塊D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;

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

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

log_product_browse的分區(qū)表,分區(qū)字段為etl_date且值與ods庫(kù)的相對(duì)

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

dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、

dwd_modify_user均填寫(xiě)“user1”,dwd_insert_time、dwd_modify_time

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

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

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

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

modified_time,并按照l(shuí)og_id進(jìn)行升序排序,將結(jié)果截圖粘貼至客戶端桌

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

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

字段類型中文含義備注

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

+MMddHHmmssSSS

Info列族名

log_idint

product_idint

customer_idstring

gen_orderint

order_snstring

modified_timedouble

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

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

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

dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、

dwd_modify_user均填寫(xiě)“user1”,dwd_insert_time、dwd_modify_time

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

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

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

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

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

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

表該值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、

dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)

“user1”,dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間(年

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

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

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

任務(wù)序號(hào)下;

12、將dwd庫(kù)中dim_customer_inf、dim_customer_addr、

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

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

且值為當(dāng)前比賽日的前一天日期(分區(qū)字段格式為yyyyMMdd),并添加

dws_insert_user、dws_insert_time、dws_modify_user、dws_modify_time

四列,其中dws_insert_user、dws_modify_user均填寫(xiě)“user1”,

dws_insert_time、dws_modify_time均填寫(xiě)當(dāng)前操作時(shí)間(年月日必須是今

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

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

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

任務(wù)二:離線指標(biāo)計(jì)算

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

份下單時(shí)間為2022年的支付轉(zhuǎn)化率,并將計(jì)算結(jié)果按照下述表結(jié)構(gòu)寫(xiě)入

clickhouse的ds_result庫(kù)的payment_cvr表。在Linux的clickhouse命

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

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

號(hào)下;

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

payment_cvr表結(jié)構(gòu):

字段類型中文含義備注

provincestring省份名

creat_orderint已下單數(shù)

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

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

rankingint轉(zhuǎn)化率排名

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論