尚硅谷大數(shù)據(jù)項目之電商數(shù)倉(即席查詢)_第1頁
尚硅谷大數(shù)據(jù)項目之電商數(shù)倉(即席查詢)_第2頁
尚硅谷大數(shù)據(jù)項目之電商數(shù)倉(即席查詢)_第3頁
尚硅谷大數(shù)據(jù)項目之電商數(shù)倉(即席查詢)_第4頁
尚硅谷大數(shù)據(jù)項目之電商數(shù)倉(即席查詢)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

尚硅谷大數(shù)據(jù)項目之電商數(shù)倉(即席查詢)

第1章Presto

1.1Presto簡介

1.1.1Presto概念

夕Presto概念@尚硅谷

Presto是一個開源的分布式SQL查詢引擎,數(shù)據(jù)量支持GB到PB字節(jié),主要用

來處理秒級查詢的場景。

注意:雖然Presto可以解析SQL,但它不是一個標(biāo)準(zhǔn)的數(shù)據(jù)庫。不是MySQL、

Oracle的代替品,也不能用來處理在線事務(wù)(OLTP)?

1.1.2Presto架構(gòu)

&Presto架構(gòu)。尚硅谷

Presto由一個Coordinalor和多個Workei?組成。

4)Calolog表示數(shù)據(jù)源。一個Calelog包含Schema和Connector

HiveMetastore

1)由客戶端提交查詢,

從Pre*。命令行CLI提交到

Coordinator;.

PrestoCLI>PrestoCoordinator

2)Coordinaior解析查詢計

劃,然用把任務(wù)分發(fā)給

Worker執(zhí)行,

7)Coordinator是負(fù)方從Worker獲

取結(jié)果并返回最終結(jié)果給Client

Connect^臂配器,6)Schema類似J;

用,Presio和數(shù)據(jù)嗎My河中數(shù)據(jù)庫,Table

徵贏就B類似「MySQL中表

1.1.3Presto優(yōu)缺點

沙Presto優(yōu)缺點。商硅谷

MapReducePresto1)優(yōu)點

Allstagesarepipe-lined

(1)Preslo基于內(nèi)存運(yùn)算,減少了硬盤IO,計算更快。

reduce■reduce/Nowaittime

/Nofault-tolerance

Waitbetween(2)能夠連接多個數(shù)據(jù)源,路數(shù)據(jù)源連表查,如從

fstages

Hive杳詢大量網(wǎng)站訪問記錄,然后從Mysql中匹配出設(shè)備

memory-to-memofy信息。

datatransfer

reduce■reduce

?Nodisk10

Writedata/Datochunkmint

todiskfitinmemory

2)缺點

Presto能夠處理PB級別的海量數(shù)據(jù)分析,但Presio并不是

把PB級數(shù)據(jù)都放在內(nèi)存中計算的。而是根據(jù)場景,如Couni,

AVG等聚合運(yùn)算,是邊讀數(shù)據(jù)邊計算,再濟(jì)內(nèi)存:,再讀數(shù)據(jù)

再計算,這種耗的內(nèi)存并不高。但是連表查,就可能產(chǎn)生.大

量的臨時數(shù)據(jù),因此速度會變慢,反而Hive此時會更擅長。

1.1.4Presto、Impala性能比較

s:/u012551524/article/details〃9124532

測試結(jié)論:Impala性能稍領(lǐng)先于Presto,但是Presto在數(shù)據(jù)源支持上非常豐富,包

括Hive、圖數(shù)據(jù)庫、傳統(tǒng)關(guān)系型數(shù)據(jù)庫、Redis等。

1.2Presto安裝

1.2.1PrestoServer安裝

o)官網(wǎng)地址

s:prestodb.github.io/

1)下載地址

s:/maven2/com/facebook/presto/presto-server/0.196/presto

-server-0.196.tar.gz

2)將presto-server-0.196.tar.gz導(dǎo)入hadoopl02的/opt/software目錄下,并解壓到

/opt/module目錄

[atguiguhadoopl02software]$tar-zxvfpresto-server-0.196.tar.gz-C

/opt/module/

3)修改名稱為presto

[atguiguhadoopl02module]$mvpresto-server-0.196/presto

4)進(jìn)入到/opt/module/presto目錄,并創(chuàng)建存儲數(shù)據(jù)文件夾

[atguiguhadoopl02presto]$mkdirdata

5)進(jìn)入到/opt/module/presto目錄,并創(chuàng)建存儲配置文件文件夾

[atguiguhadoopl02presto]$mkdiretc

6)配置在/opt/module/presto/etc目錄下添加jvm.config配置文件

[atguiguhadoopl02etc]$vimjvm.config

添加如下內(nèi)容

-server

-Xmxl6G

-XX:+UseGlGC

-XX:GlHeapRegionSize=32M

-XX:+UseGCOverheadLimit

-XX:+ExplicitGCInvokesConcurrent

-XX:+HeapDumpOnOutOfMemoryError

-XX:+ExitOnOutOfMemoryError

7)Presto可以支持多個數(shù)據(jù)源,在Presto里面叫catalog,這里我們配置支持Hive的數(shù)

據(jù)源,配置一個Hive的catalog

[atguiguhadoopl02etc]$mkdircatalog

[atguiguhadoopl02catalog]$vimperties

添加如下內(nèi)容

=hive-hadoop2

hive.metastore.uri=thrift:hadoopl02:9083

8)將hadoopl02上的presto分發(fā)至UhadooplOS.hadoopl04

[atguiguhadoopl02module]$xsyncpresto

分發(fā)之后,分別進(jìn)入三臺主機(jī)的

9)hadoopl02xhadoopl03,hadoopl04

/opt/moduIe/presto/etc的路徑。配置node屬性,nodeid每個節(jié)點都不一樣。

[atguiguhadoopl02etc]$vimperties

node.environment=production

node.id

node.data-dir=/opt/module/presto/data

[atguiguhadoopl03etc]$vimperties

node.environment=production

node.idtffffffff-ffff-ffff-ffff-fffffffffffe

node.data-dir=/opt/module/presto/data

[atguiguhadoopl04etc]$vimperties

node.environment=production

nodeJd

node.data-dir=/opt/module/presto/data

10)Presto是由一個coordinator節(jié)點和多個worker節(jié)點組成。在hadoopl02上配置

成在上配置為

coordinator,hadoopl03xhadoopl04workero

(1)hadoopl02上配置coordinator節(jié)點

[atguiguhadoopl02etc]$vimperties

添加內(nèi)容如下

coordinator=true

node-scheduler.include-coordinator=false

-server..port=8881

query.max-memory=50GB

discovery-server.enabled=true

discovery.uri=:hadoopl02:8881

上配置節(jié)點

(2)hadoopl03xhadoopl04worker

[atguiguhadoopl03etc]$vimperties

添加內(nèi)容如下

coordinator=false

-server..port=8881

query.max-memory=50GB

discovery.uri=:hadoopl02:8881

[atguiguhadoopl04etc]$vimperties

添加內(nèi)容如下

coordinator=false

-server..port=8881

query.max-memory=50GB

discovery.uri=:hadoopl02:8881

11)在hadoopl02的/opt/module/hive目錄下,啟動HiveMetastore,用atguigu角

[atguiguhadoopl02hive]$

nohupbin/hive—servicemetastore>/dev/null2>&1&

分別在上啟動

12)hadoopl02.hadoopl03xhadoopl04PrestoServer

(1)前臺啟動Presto,控制臺顯示日志

[atguiguhadoopl02presto]$bin/launcherrun

[atguiguhadoopl03presto]$bin/launcherrun

[atguiguhadoopl04presto]$bin/launcherrun

(2)后臺啟動Presto

[atguiguhadoopl02presto]$bin/launcherstart

[atguiguhadoopl03presto]$bin/launcherstart

[atguiguhadoopl04presto]$bin/launcherstart

13)日志查看路彳2/opt/module/presto/data/var/log

1.2.2Presto命令行Client安裝

1)下載Presto的客戶端

s:repol?m〉ven?org/maven2/com/facebook/presto/picsto?cli/0.196/presto?cli?

0.196-executable.ja「

2)將presto-cli-0.196-executable.jar上傳至(Jhadoopl02的/opt/module/presto文件

夾下

3)修改文彳特稱

[atguiguhadoopl02presto]$mvpresto-cli-0.196-executable.jarprestocli

4)增加執(zhí)行權(quán)限

[atguiguhadoopl02presto]$chmod+xprestocli

5)啟動prestocli

[atguiguhadoopl02presto]$./prestocli-serverhadoopl02:8881—catalog

hive-schemadefault

6)Presto命令行操作

Presto的命令行操作,相當(dāng)于Hive命令行操作。每個表必須要加上schema。

例如:

select*fromschema.tablelimit100

1.2.3Presto可視化Client安裝

1)將yanagishima-18.0.zip上傳至!Jhadoopl02的/opt/module目錄

2)解壓縮yanagishima

[atguiguhadoopl02module]$unzipyanagishima-18.0.zip

cdyanagishima-18.0

3)進(jìn)入至U/opt/module/yanagishima-18.0/conf文彳牛夾,編寫perties

配置

[atguiguhadoopl02conf]$vimperties

添加如下內(nèi)容

jetty,port=7080

presto.datasources=atguigu-presto

presto.coordinator.server.atguigu-presto=:hadoopl02:8881

catalog.atguigu-presto=hive

schema.atguigu-presto=default

sql.query.engines=presto

4)在/opt/module/yanagishima-18.0路徑下啟動yanagishima

[atguiguhadoopl02yanagishima-18.0]$

nohupbin/yanagishima-start.sh>y.log2>&1&

5)啟動web頁面

:hadoopl02:7080

看到界面,進(jìn)行查詢了。

6)查看表結(jié)構(gòu)

tltM?fE

SchemaTatoleOColumn;ExtraComment

defauhdm.version.alocauonnewsjd

dw.weMherm?d.d?Hy.ne?.dt

infomwtion.KbeniamW_newj_hist<xy_di

mW_usef.hUtory_dt

MW

ocfe.ad.dt

toul.dtsptay

odi_tMdtg<ound.dt

toul.ctck

odt.basedau.dt

partitionkey

ods.dlsplay.dl

od$.loadlnt.dt

ods.newsdeutlpro.dt

fxpandColumnsMLECT,FROM...WHEUat--29190222■LIMITxeeSet?Run

這里有個TreeView,可以查看所有表的結(jié)構(gòu),包括Schema、表、字段等。

比如執(zhí)行select*fromhive.dw_weather.tmp_news_clicklimit10這個句子里Hive

這個詞可以刪掉,是上面配置的Catalog

select,fromhive.dw_weather.mid_daily_news_dtlimit10

品Treeview

?B?euUe?view

Schema:)TableColumnType

defaultdm_version_allocationvarchar

dw.weathermld.daily_news.dtvarchar

lnformatlon_schemamid_news_hl$tory_dtvarchar

testmld_user_history_dt

varchar

ods.ad.dt

integer

ods_background_dt

Integer

ods.basedata.dt

varchar

ods.display.dt

ods_loadlng_dt

ods_newsdetailpro_dt

每個表后面都有個復(fù)制鍵,點一下會復(fù)制完整的表名,然后再上面框里面輸入sql語句,

Ctrl+enter鍵執(zhí)行顯示結(jié)果

20190223_122817.00012_54w6c12019/02/2320:28:258,03278105'-Pl

newsidlangversion_nameareauserjd

1n4260en127MXu2868

2n0010en13.3MXu6515

n6759Pl1.0.7MXU9947

4n8048en125MXu5196

n3795en13.5MXU5296

6n3021en13.0MXU8066

7n7023en13.8MXU8958

8n7696en122MXU5696

9n9067Pt1.1.2MXU0179

10n6068en12.6MX□3771

13Presto優(yōu)化之?dāng)?shù)據(jù)存儲

13.1合理設(shè)置分區(qū)

與Hive類似,Presto會根據(jù)元數(shù)據(jù)信息讀取分區(qū)數(shù)據(jù),合理的分區(qū)能減少Presto數(shù)

據(jù)讀取量,提升查詢性能。

13.2使用列式存儲

Presto對ORC文件讀取做了特定優(yōu)化,因此在Hive中創(chuàng)建Presto使用的表時,建議

采用ORC格式存儲。相對于Parquet,Presto對ORC支持更好。

13.3使用壓縮

數(shù)據(jù)壓縮可以減少節(jié)點間數(shù)據(jù)傳輸對I。帶寬壓力,對于即席查詢需要快速解壓,建議

采用Snappy壓縮。

1.4Presto優(yōu)化之直詢SQL

1.4.1只選擇使用的字段

由于采用列式存儲,選擇需要的字段可加快字段的讀取、減少數(shù)據(jù)量。避免采用*讀取

所有字段。

[GOOD]:SELECTtime,user;hostFROMtbl

[BAD]:SELECT*FROMtbl

1.4.2過濾條件必須加上分區(qū)字段

對于有分區(qū)的表,where語句中優(yōu)先使用分區(qū)字段進(jìn)行過濾。acct_day是分區(qū)字段,

visit_time是具體訪問時間。

[GOOD]:SELECTtime,user,hostFROMtblwhereacct_day=20171101

[BAD]:SELECT*FROMtblwherevisit_time=20171101

1.4.3GroupBy語句優(yōu)化

合理安排Groupby語句中字段順序?qū)π阅苡幸欢ㄌ嵘?。將GroupBy語句中字段按照

每個字段distinct數(shù)據(jù)多少進(jìn)行降序排列。

[GOOD]:SELECTGROUPBYuid,gender

[BAD]:SELECTGROUPBYgender,uid

1.4.4Orderby時使用Limit

Orderby需要掃描數(shù)據(jù)到單個worker節(jié)點進(jìn)行排序?qū)е聠蝹€worker需要大量內(nèi)存。

如果是查詢TopN或者BottomN,使用limit可減少排序計算和內(nèi)存壓力。

[GOOD]:SELECT*FROMtblORDERBYtimeLIMIT100

[BAD]:SELECT*FROMtblORDERBYtime

1.4.5使用Join語句時將大表放在左邊

Presto中join的默認(rèn)算法是broadcastjoin,即將join左邊的表分割到多個worker,

然后將join右邊的表數(shù)據(jù)整個復(fù)制T分發(fā)送到每個worker進(jìn)行計算。如果右邊的表數(shù)據(jù)

量太大,則可能會報內(nèi)存溢出錯誤。

[GOOD]SELECT...FROMlarge_tableIjoinsmall_tablesonLid=s.id

[BAD]SELECT...FROMsmall_tablesjoinlarge_tableIonLid=s.id

1.5注意事項

1.5.1字段名引用

避免和關(guān)鍵字沖突:MySQL對字段加反引號'、Presto對字段加雙引號分割

當(dāng)然,如果字段名稱不是關(guān)鍵字,可以不加這個雙引號。

1.5.2時間函數(shù)

對于Timestamp,需要進(jìn)行比較的時候,需要添加Timestamp關(guān)鍵字,而MySQL

中對Timestamp可以直接進(jìn)行比較。

/*MySQL的寫法*/

SELECTtFROMaWHEREt>,2017-01-0100:00:00,;

/*Presto中的寫法*/

SELECTtFROMaWHEREt>timestamp'2017-01-0100:00:00,;

1.5.3不支持INSERTOVERWRITE語法

中不支持語法,只能先然后

Prestoinsertoverwritedelete,insertintoe

1.5.4PARQUET格式

Presto目前支持Parquet格式,支持查詢,但不支持insert,

第2章Druid

2.1Druid簡介

2.1.1Druid概念

夕Druid簡介◎商硅谷

Druid是一個快速的列式分布式的支持實時分析的數(shù)據(jù)存儲系統(tǒng)。它在處理PB

級數(shù)據(jù)、毫秒級查詢、數(shù)據(jù)實時處理方面,比傳統(tǒng)的OLAP系統(tǒng)有了顯著的性能

改進(jìn)。

Druid的官方網(wǎng)站是http:〃druid.io。

注意:阿里巴巴也曾創(chuàng)建過一個開源項目叫作Druid(簡稱阿里Druid),它是

一個數(shù)據(jù)庫連接池的項目。阿里Druid和本文討論的Druid沒有任何關(guān)系,它們解

決完全不同的問題。

2.1.2Druid特點

§Druid特點◎尚硅谷

1)列式存儲格式。Druid使用面向列的存儲,它只需要加載特定查詢所需要的列。查詢速度迅速快。

2)可擴(kuò)展的分布式系統(tǒng)。Druid通常部署在數(shù)十到數(shù)百臺服務(wù)器的集群中,并且提供數(shù)百萬條/秒的攝

取率,保留數(shù)百萬條記錄,以及亞秒級到幾秒鐘的查詢延遲。

3)大規(guī)模的并行處理.Druid可以在整個集群中進(jìn)行大規(guī)模的并行查詢。

4)實時或批量攝取cDruid可以實時攝取數(shù)據(jù)(實時獲取的數(shù)據(jù)可立即用于查詢)或

批量處理數(shù)據(jù)。

5)自愈,自平衡,易操作。集群擴(kuò)展和縮小,只需添加或刪除服務(wù)器,集群將在后臺自動重新平衡,

無需任何停機(jī)時間。

6)數(shù)據(jù)進(jìn)行了有效的預(yù)聚合或預(yù)計算,查詢速度快。

7)數(shù)據(jù)的結(jié)果應(yīng)用了Bitmap壓縮算法。

2.1.3Druid應(yīng)用場景

〈夕Druid應(yīng)用場景@商硅谷

1)適用于清洗好的記錄實時錄入,但不需要更新操作

2)適用于支持寬表,不用Join的方式(換句話說就是一張單表)

3)適用于可以總結(jié)出基礎(chǔ)的統(tǒng)計指標(biāo),用一個字段表示

4)適用于實時性要求高的場景

5)適用于對數(shù)據(jù)質(zhì)量的敏感度不高的場景

2.1.4Druid對比Impala/Presto/Spark

SQL/Kylin/Elasticsearch

夕Druid對比Impala/Presto/SparkSQL/Kylin/Elasticsearch◎尚硅蒼

1Druid1KvlinIES4)SparkSQL:基于Spark平臺上的一個OLAP框架,

YYNNNN

基本思路是增加機(jī)器來并行il?算,從而提高查詢速

YYYYYY

度。

N(開發(fā)中)YYYYN

離線YYYYYY

實時YN(開發(fā)中)NNNY

NYYYYN5)ES:最大的特點是使用了倒排索引解決索引問題。

NYYYYN根據(jù)研究,ES在數(shù)據(jù)獲取和聚集用的資源比在Druid

IJDBCforBlNYYYYN

1)Druid:是?個實時處理時序數(shù)據(jù)的OLAP數(shù)據(jù)庫,因為它的索引首先按照6)框架選型:

時間分片,查詢的時候也是按照時間線上路由索引。<1)從超大數(shù)據(jù)的查詢效率來看:

Druid>Kylin>Presto>SparkSQL

2)Kylin:核心是Cube,Cube是--種預(yù)計算技術(shù),基本思路是預(yù)先對數(shù)據(jù)作

(2)從支持的數(shù)據(jù)源種類來講:

多維索引,查詢時只掃描索引而不訪問原始數(shù)據(jù)從而提速。

Presto>SparkSQL>Kylin>Druid

3)Presto:它沒有使用MapReduce.大部分場景下比Hive快一個數(shù)量級,其

中的關(guān)鍵是所有的處理都在內(nèi)存中完成

4)Impala:雄J?內(nèi)存運(yùn)算.速度快,<:Presto^;

2.2Druid框架原理

沙Druid框架原理。商硅谷

:i5)統(tǒng)治并:進(jìn)程監(jiān)Dnadnod**

要負(fù)資歷史節(jié)點的數(shù)據(jù)視MiddleManager進(jìn)程,井ExternalDvpendenciM

負(fù)我均衡.以及通過規(guī)且是數(shù)據(jù)攝入Druid的控制

.OtMriM

?>J(Rule)管理數(shù)據(jù)的CoordinatorOverlord器,他們負(fù)賁將提取任務(wù)

Nodes...........*Mctedate

Nodes分配給并

生命周期.MiddleManagers???*0ata/S?9m?atB

梆調(diào)Segement發(fā)布。

3>杳詢打點:接收客戶端

表聞?wù)埱?,并將這些15詢轉(zhuǎn)發(fā)給

▼Historicals和MiddleManagers.

StrvarrwxiOaU-------?

Broker

MetadataStorageZookeeper?,CltantOuviM

Nodes當(dāng)Brokers從這些子杳詢中

BMcfiDaU------

D中同管殲W點:及時?收到結(jié)果時,它們會合并這些結(jié)

8)Zdokeepert為

果并將它們詆回給調(diào)用者.

攝入實時數(shù)據(jù),已生成7>兀數(shù)據(jù)內(nèi),存儲Druid集群的;Druid集群提供以執(zhí)行仍謝

Segment數(shù)據(jù)文件,元數(shù)據(jù)信息,比如Segment的相關(guān)倍思.,服務(wù),如內(nèi)法服務(wù)的監(jiān)控.皆詢打點采用了緩存技術(shù)

一般用MySQL齡悔調(diào)和領(lǐng)導(dǎo)者選舉.

Historical

Ncdcq

2),歷史節(jié)點:加靚已生成好的數(shù)據(jù)文件,以供數(shù)據(jù)臺

6)數(shù)據(jù)文件療銘班:存放生成的Segment數(shù)據(jù)文件,并Bifii,H?toncal節(jié)點是整個集種自詢性能的核心所在,因為

供歷史服務(wù)器卜找,對「單節(jié)點集肝可以是本地班盤,而對Historic排會承擔(dān)絕大部分的segmentf£詢.

丁分布式集群般是HDFS,

2.3Druid數(shù)據(jù)結(jié)構(gòu)

與Druid架構(gòu)相輔相成的是其基于DataSource與Segment的數(shù)據(jù)結(jié)構(gòu),它們共同成

就了Druid的高性能優(yōu)勢。

夕Druid數(shù)據(jù)結(jié)構(gòu)(DataSource+Segment)@商硅谷

是?個邏輯概念,卻是數(shù)損的實際物

Druid的DaiaSource相當(dāng)于,關(guān)系里:數(shù)據(jù)庫中的表fTable)..DataSource的結(jié)構(gòu)包括:DataSourceSegment

評存儲格式,Druid將不同時間范圍內(nèi)的數(shù)據(jù)存儲在不同的

1)時間列:表明每行數(shù)據(jù)的時間值,默認(rèn)使用UTC時間格式凡精確到富秒級別。

Segment數(shù)據(jù)塊中.這便是所謂的數(shù)據(jù)橫網(wǎng)切機(jī)按照時間橫

2)諭度列:維度來自于OLAP的概念,用來標(biāo)識數(shù)據(jù)行的各個類別信息。

向切割數(shù)據(jù),避免了全表查詢.極大的提高了效率.

3)指標(biāo)列:是用于聚合和計兌的列.通常是一些數(shù)字,計電操作通常包括Count、Sum等“

(ESegment中,也采用面向列進(jìn)行數(shù)據(jù)壓縮存儲(BitmapEE

tlmestaap::publisheradvertisergenderclickprice縮技術(shù)),這便是所謂的數(shù)據(jù)縱向切割.

2011-ei-01Tei:ei:35Z;:bieberfever.co?google.con

2eil-ei-eiT01:e3:63Z*;bieberfever.coagoogle,CM

2eil-?l-?lT01:e4:51Z::bieberfever.co?google.coa

2011-ei-eiTei:ee:0ez::uUratri?fast.co<iigoogle.coaFemale

2011-61-eiT02:00:00Z:*ultratrlafast.coMgoogle.coaFemale

2011-ei-eiTe2:e0:eez:

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論