




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據分析工具:Presto:Presto與數據湖存儲1數據分析工具:Presto:Presto與數據湖存儲1.1Presto簡介1.1.1Presto的歷史與發(fā)展Presto是一款開源的分布式SQL查詢引擎,由Facebook在2012年開發(fā)并開源,旨在處理大規(guī)模的數據查詢需求。它能夠跨多個數據源進行查詢,包括傳統(tǒng)的關系型數據庫、Hadoop文件系統(tǒng)、NoSQL數據庫等,這使得Presto成為數據湖存儲環(huán)境中進行數據分析的理想工具。Presto的設計目標是提供低延遲的查詢性能,同時支持PB級數據量的處理。自開源以來,Presto已經被眾多公司和組織采用,包括Airbnb、Dropbox、Uber等,其社區(qū)也不斷壯大,持續(xù)推動著Presto的發(fā)展和優(yōu)化。1.1.2Presto的特點與優(yōu)勢Presto的主要特點和優(yōu)勢包括:跨數據源查詢:Presto支持多種數據源,如HDFS、S3、Cassandra、MySQL、PostgreSQL等,這使得用戶可以在不同的數據存儲之間無縫切換,進行統(tǒng)一的數據分析。低延遲查詢:Presto能夠在幾秒鐘內返回查詢結果,即使是在大規(guī)模數據集上。這得益于其分布式查詢引擎和優(yōu)化的查詢計劃生成。高并發(fā)處理:Presto能夠同時處理大量的并發(fā)查詢,這在多用戶環(huán)境中尤為重要,確保了系統(tǒng)的響應性和效率。支持標準SQL:Presto支持標準的SQL語法,包括復雜的查詢和窗口函數,使得數據分析師能夠使用熟悉的語言進行數據操作??蓴U展性:Presto的架構設計允許它在需要時輕松擴展,無論是增加更多的數據節(jié)點還是支持新的數據源。成本效益:與傳統(tǒng)的數據倉庫解決方案相比,Presto能夠在成本更低的硬件上運行,同時提供相似的查詢性能,降低了大規(guī)模數據分析的門檻。1.2Presto與數據湖存儲數據湖存儲是一種存儲大量原始數據的架構,這些數據可以是結構化的、半結構化的或非結構化的。數據湖存儲通常使用低成本的存儲系統(tǒng),如Hadoop分布式文件系統(tǒng)(HDFS)、AmazonS3或AzureBlobStorage。Presto與數據湖存儲的結合,為數據分析師提供了一個強大的平臺,可以快速、靈活地查詢和分析這些存儲在數據湖中的數據。1.2.1Presto在數據湖存儲中的應用Presto通過其連接器機制,能夠直接查詢存儲在數據湖中的數據,而無需將數據移動到專門的數據倉庫中。這不僅節(jié)省了數據移動的成本,也提高了數據的實時性和可用性。例如,使用Presto查詢存儲在AmazonS3上的Parquet格式數據,可以使用以下SQL語句:--創(chuàng)建一個外部表,指向S3上的數據
CREATEEXTERNALTABLEIFNOTEXISTSsales(
product_idbigint,
sale_datedate,
quantityint,
pricedecimal(10,2)
)
ROWFORMATDELIMITEDFIELDSTERMINATEDBY','
STOREDASPARQUET
LOCATION's3://my-bucket/sales/';
--查詢數據
SELECTproduct_id,SUM(quantity*price)astotal_sales
FROMsales
WHEREsale_dateBETWEEN'2020-01-01'AND'2020-12-31'
GROUPBYproduct_id;在上述示例中,我們首先創(chuàng)建了一個外部表sales,指向存儲在S3上的Parquet格式數據。然后,我們執(zhí)行了一個簡單的聚合查詢,計算了2020年每個產品的總銷售額。Presto能夠高效地處理這種類型的查詢,即使數據量非常大。1.2.2Presto與數據湖存儲的集成優(yōu)勢數據湖的靈活性:數據湖存儲允許數據以原始格式存儲,無需預先定義模式或進行數據清洗。Presto可以直接查詢這些原始數據,提供了極大的靈活性。成本效益:數據湖存儲通常使用低成本的存儲系統(tǒng),而Presto的分布式查詢能力可以充分利用這些存儲系統(tǒng)的性能,降低了數據分析的總體成本。實時分析:Presto的低延遲查詢能力使得實時分析成為可能,這對于需要快速響應的業(yè)務場景尤為重要。統(tǒng)一的數據訪問:Presto提供了一個統(tǒng)一的查詢接口,可以訪問數據湖中的多種數據源,簡化了數據訪問和管理的復雜性。通過上述介紹,我們可以看到Presto在數據湖存儲環(huán)境中的強大功能和優(yōu)勢。它不僅提供了高效的數據查詢能力,還簡化了數據湖的管理和使用,使得數據分析師能夠更加專注于數據的分析和洞察,而不是數據的管理和處理。2數據湖存儲概念2.1數據湖的定義數據湖是一種存儲大量原始數據的架構,這些數據可以是結構化、半結構化或非結構化。數據湖的主要特點是它能夠存儲數據的原始格式,而不需要預先定義數據模式。這意味著,數據可以在收集時直接存儲,而無需進行任何轉換或清洗,這為后續(xù)的數據分析提供了極大的靈活性。數據湖通常使用低成本的存儲解決方案,如Hadoop的HDFS或云存儲服務,如AmazonS3或GoogleCloudStorage。2.1.1示例假設我們有一個日志文件,其中包含用戶在網站上的活動記錄。這些記錄可能包含各種信息,如用戶ID、活動時間、活動類型、設備信息等。在數據湖中,這些日志文件可以直接存儲,而無需進行任何預處理。#將日志文件上傳到數據湖(例如AmazonS3)
awss3cp/path/to/local/logfiles3://mydatalake/logs/2.2數據湖與數據倉庫的區(qū)別數據湖和數據倉庫都是用于存儲和分析大量數據的解決方案,但它們在數據的存儲方式、數據的結構和使用場景上存在顯著差異。數據存儲方式:數據湖存儲原始數據,數據可以是結構化、半結構化或非結構化的,而數據倉庫通常存儲結構化數據,這些數據在存儲前已經被清洗和轉換,以適應特定的查詢需求。數據結構:數據湖中的數據結構可以在數據被讀取時定義,而數據倉庫中的數據結構在數據被寫入時就已經定義好了。使用場景:數據湖適合于需要進行探索性數據分析的場景,而數據倉庫更適合于需要進行固定報表和BI分析的場景。2.2.1示例假設我們有一個電子商務公司,需要分析用戶行為。在數據湖中,我們可以存儲原始的用戶活動日志,然后使用Presto等工具進行實時查詢和分析,以發(fā)現用戶行為的模式和趨勢。而在數據倉庫中,我們可能需要預先定義好數據模式,將用戶活動日志轉換為結構化的數據,然后存儲在數據倉庫中,以支持固定的報表和BI分析。--使用Presto查詢數據湖中的用戶活動日志
SELECTuser_id,COUNT(*)asactivity_count
FROMlogs
WHEREactivity_type='purchase'
GROUPBYuser_id
ORDERBYactivity_countDESC;在這個例子中,logs表是直接從數據湖中的日志文件創(chuàng)建的,而不需要預先定義數據模式。我們使用Presto的SQL查詢語言來查詢數據,找出購買活動最多的用戶。這種查詢在數據湖中是可能的,因為數據湖中的數據可以是半結構化的,如JSON或Parquet格式,這些格式可以直接被Presto讀取和查詢。2.3Presto與數據湖存儲Presto是一個開源的分布式SQL查詢引擎,它能夠查詢存儲在數據湖中的大規(guī)模數據集。Presto的設計目標是提供高性能的查詢能力,同時支持多種數據源,包括Hadoop的HDFS、AmazonS3、GoogleCloudStorage、以及各種數據庫和數據倉庫。2.3.1示例假設我們有一個數據湖,其中存儲了用戶活動日志、產品信息和用戶信息。我們可以使用Presto來查詢這些數據,以分析用戶對特定產品的興趣。--創(chuàng)建一個外部表,指向數據湖中的用戶活動日志
CREATETABLElogs(
user_idVARCHAR,
activity_timeTIMESTAMP,
activity_typeVARCHAR,
product_idVARCHAR,
device_infoVARCHAR
)
WITH(
format='PARQUET',
location='s3://mydatalake/logs/'
);
--創(chuàng)建一個外部表,指向數據湖中的產品信息
CREATETABLEproducts(
product_idVARCHAR,
product_nameVARCHAR,
product_categoryVARCHAR
)
WITH(
format='PARQUET',
location='s3://mydatalake/products/'
);
--創(chuàng)建一個外部表,指向數據湖中的用戶信息
CREATETABLEusers(
user_idVARCHAR,
user_nameVARCHAR,
user_emailVARCHAR
)
WITH(
format='PARQUET',
location='s3://mydatalake/users/'
);
--查詢數據湖中的數據,分析用戶對特定產品的興趣
SELECTu.user_name,COUNT(*)asactivity_count
FROMlogsl
JOINproductspONduct_id=duct_id
JOINusersuONl.user_id=u.user_id
WHEREduct_name='ProductA'
GROUPBYu.user_name
ORDERBYactivity_countDESC;在這個例子中,我們首先使用Presto的CREATETABLE語句創(chuàng)建了三個外部表,分別指向數據湖中的用戶活動日志、產品信息和用戶信息。然后,我們使用JOIN語句將這三個表連接起來,以分析用戶對特定產品的興趣。這個查詢在數據湖中是可能的,因為Presto能夠直接讀取和查詢存儲在數據湖中的數據,而不需要將數據移動到其他地方。3Presto與數據湖的集成3.1Presto支持的數據湖格式Presto,作為一款高性能的分布式SQL查詢引擎,支持多種數據湖存儲格式,這使得它能夠靈活地處理和分析存儲在不同格式中的大數據。以下是一些Presto支持的數據湖格式:ParquetORC(OptimizedRowColumnar)AvroJSONCSVHive其中,Parquet和ORC是兩種特別優(yōu)化的數據格式,它們支持列式存儲,能夠顯著提高查詢性能,特別是在大數據分析場景中。3.1.1示例:使用Parquet格式的數據假設我們有一個存儲在Parquet格式中的數據集,數據集包含用戶行為日志,字段包括用戶ID、活動時間、活動類型等。下面是如何在Presto中查詢這個數據集的示例:--創(chuàng)建連接到Parquet文件的表
CREATETABLEuser_activity(
user_idBIGINT,
event_timeTIMESTAMP,
event_typeVARCHAR
)
WITH(
format='PARQUET',
parquet_compression='SNAPPY'
);
--插入數據到表中
INSERTINTOuser_activity
VALUES(12345,'2023-01-0112:00:00','login'),
(12345,'2023-01-0112:05:00','search'),
(12345,'2023-01-0112:10:00','purchase');
--查詢特定用戶在特定時間范圍內的活動
SELECTevent_type
FROMuser_activity
WHEREuser_id=12345
ANDevent_timeBETWEEN'2023-01-0112:00:00'AND'2023-01-0112:15:00';在上述示例中,我們首先創(chuàng)建了一個Parquet格式的表user_activity,然后插入了一些示例數據。最后,我們查詢了用戶ID為12345的用戶在2023年1月1日12點到12點15分之間的活動類型。3.2配置Presto連接數據湖要使Presto能夠訪問和查詢數據湖中的數據,需要正確配置Presto的連接器。連接器是Presto用來與不同數據源進行交互的模塊。對于數據湖存儲,如HDFS、S3等,Presto提供了Hive連接器,它能夠讀取存儲在這些系統(tǒng)中的數據。3.2.1配置步驟編輯perties文件:在Presto的配置目錄下,編輯perties文件,確保Hive連接器被啟用。配置Hive連接器:在perties文件中,為Hive連接器添加配置,包括Hive元數據存儲的位置、HDFS的配置等。重啟Presto服務:配置完成后,需要重啟Presto服務以使更改生效。3.2.2示例:配置Presto連接到HDFS上的Hive以下是一個示例,展示了如何在Presto中配置Hive連接器以連接到HDFS上的Hive元數據:#在perties中啟用Hive連接器
hive.enabled=true
#在perties中配置Hive連接器
hive.metastore.uri=thrift://hive-metastore-server:9083
hive.config.resources=etc/hive-site.xml
hive.storage-format=PARQUET
pression=SNAPPY
hive.security=DISABLED在上述配置中,我們指定了Hive元數據存儲的URI,配置了Hive的存儲格式為Parquet,并啟用了Snappy壓縮。這些配置確保了Presto能夠高效地讀取和查詢存儲在HDFS上的Hive數據。3.2.3連接測試配置完成后,可以通過運行以下SQL查詢來測試Presto是否能夠成功連接到Hive:--查詢Hive中的表
SELECT*FROMhive.default.user_activityLIMIT10;如果查詢成功返回數據,說明Presto已經成功連接到Hive,并能夠讀取數據湖中的數據。通過上述配置和示例,我們可以看到Presto與數據湖存儲的集成不僅提供了對多種數據格式的支持,還允許我們通過簡單的SQL查詢來高效地分析和處理存儲在數據湖中的大數據。這對于現代數據分析和數據科學項目來說,是一個非常重要的能力。4Presto在數據湖上的查詢優(yōu)化4.1查詢優(yōu)化策略4.1.1利用Presto的動態(tài)過濾Presto支持動態(tài)過濾,這是一種在連接操作中優(yōu)化查詢性能的技術。動態(tài)過濾可以減少不必要的數據掃描,特別是在處理大規(guī)模數據集時,效果尤為顯著。例如,假設我們有一個數據湖存儲中的銷售數據表sales和一個產品信息表products,我們想要查詢特定產品類別的銷售情況。--查詢示例
SELECTduct_id,s.quantity,p.category
FROMsaless
JOINproductspONduct_id=duct_id
WHEREp.category='Electronics';在上述查詢中,如果category過濾條件應用在連接操作之后,那么Presto會掃描整個products表,即使大部分記錄與Electronics類別無關。通過啟用動態(tài)過濾,Presto可以在連接過程中實時應用過濾條件,從而避免掃描不必要的數據。4.1.2使用分區(qū)裁剪數據湖存儲通常支持數據分區(qū),這可以顯著減少查詢需要掃描的數據量。Presto可以通過分析查詢條件,自動裁剪不需要的分區(qū),從而加速查詢。例如,如果我們想要查詢2020年1月的銷售數據,可以利用分區(qū)裁剪來優(yōu)化查詢。--查詢示例
SELECTproduct_id,SUM(quantity)
FROMsales
WHEREyear=2020ANDmonth=1
GROUPBYproduct_id;在上述查詢中,如果sales表按年和月進行分區(qū),那么Presto會只掃描2020年1月的分區(qū),而不是整個表,從而大大提高了查詢效率。4.1.3利用列式存儲數據湖存儲通常采用列式存儲格式,如Parquet或ORC,這可以提高查詢性能,特別是在進行列篩選和聚合操作時。Presto可以利用列式存儲的特性,只讀取查詢中涉及的列,而忽略其他列,從而減少I/O操作。--查詢示例
SELECTproduct_id,SUM(quantity)
FROMsales
WHEREquantity>100
GROUPBYproduct_id;在上述查詢中,如果sales表采用列式存儲格式,Presto會只讀取product_id和quantity兩列,而忽略其他列,如price或date,從而提高了查詢速度。4.2性能調優(yōu)技巧4.2.1調整查詢并行度Presto支持查詢并行執(zhí)行,通過調整并行度,可以優(yōu)化查詢性能。并行度過高可能會導致資源競爭,而過低則可能無法充分利用多核處理器的性能??梢酝ㄟ^設置query.max-splits-per-node和query.max-split-size等參數來調整并行度。--設置并行度示例
SETquery.max-splits-per-node=10;
SETquery.max-split-size=100MB;在上述示例中,我們設置了每個節(jié)點的最大并行分片數為10,每個分片的最大大小為100MB,這有助于平衡資源使用和查詢速度。4.2.2利用索引雖然Presto本身不支持索引,但可以通過預計算和存儲常用查詢的結果來模擬索引的效果。例如,如果sales表經常按product_id進行查詢,可以創(chuàng)建一個按product_id分組的匯總表,從而加速查詢。--創(chuàng)建匯總表示例
CREATETABLEsales_summaryAS
SELECTproduct_id,SUM(quantity)astotal_quantity
FROMsales
GROUPBYproduct_id;在上述示例中,我們創(chuàng)建了一個sales_summary表,該表按product_id分組并計算了總銷售量。在查詢sales表時,如果只需要product_id和銷售量,可以優(yōu)先查詢sales_summary表,從而提高查詢速度。4.2.3優(yōu)化JOIN操作JOIN操作是數據查詢中常見的操作,但在大規(guī)模數據集上可能會成為性能瓶頸。通過調整JOIN策略,如使用BROADCAST或REPLICATE策略,可以優(yōu)化JOIN操作的性能。此外,確保JOIN列的數據類型一致,以及合理分布數據,也有助于提高JOIN操作的效率。--優(yōu)化JOIN操作示例
SELECTduct_id,s.quantity,p.category
FROMsaless
JOIN(SELECT*FROMproductsWHEREcategory='Electronics')p
ONduct_id=duct_id;在上述示例中,我們通過在JOIN操作前對products表進行過濾,減少了JOIN操作的數據量,從而提高了查詢效率。4.2.4合理使用聚合函數在進行聚合操作時,合理選擇聚合函數可以顯著提高查詢性能。例如,使用SUM函數比使用COUNT函數更高效,因為SUM函數可以利用列式存儲的特性,而COUNT函數則需要掃描整個列。--使用聚合函數示例
SELECTproduct_id,SUM(quantity)astotal_quantity
FROMsales
GROUPBYproduct_id;在上述示例中,我們使用了SUM函數來計算每個產品的總銷售量,這比使用COUNT函數更高效,尤其是在處理大規(guī)模數據集時。4.2.5利用Presto的查詢計劃分析工具Presto提供了查詢計劃分析工具,如EXPLAIN命令,可以幫助理解查詢的執(zhí)行計劃,從而找出性能瓶頸并進行優(yōu)化。通過分析查詢計劃,可以了解數據的讀取方式、JOIN操作的執(zhí)行策略以及數據的分布情況,從而針對性地進行調優(yōu)。--使用EXPLAIN命令示例
EXPLAINSELECTproduct_id,SUM(quantity)
FROMsales
WHEREyear=2020ANDmonth=1
GROUPBYproduct_id;在上述示例中,我們使用了EXPLAIN命令來查看查詢的執(zhí)行計劃。這有助于我們理解查詢是如何執(zhí)行的,以及哪些部分可能需要優(yōu)化,如調整JOIN策略或增加并行度。通過上述查詢優(yōu)化策略和性能調優(yōu)技巧,可以顯著提高Presto在數據湖存儲上的查詢性能,從而更高效地進行數據分析。5Presto在數據湖中的應用場景5.1實時數據分析Presto,作為一款高性能的分布式SQL查詢引擎,能夠在數據湖中處理實時數據分析任務,這主要得益于其對多種數據源的支持和快速查詢的能力。數據湖通常存儲大量未加工的、原始的數據,這些數據可以是結構化的、半結構化的或非結構化的。Presto能夠直接查詢這些數據,而無需預先進行數據的清洗或轉換,這大大提高了實時分析的效率。5.1.1例子:實時查詢日志數據假設我們有一個數據湖,其中存儲了網站的訪問日志,我們想要實時分析過去一小時內的用戶訪問行為。日志數據可能以JSON格式存儲在HDFS中。下面是一個使用Presto查詢這些日志數據的例子:--創(chuàng)建連接到HDFS的目錄
CREATECATALOGhdfs
WITH(
connector='hdfs',
path='hdfs://localhost:8020/user/presto/logs'
);
--創(chuàng)建外部表,用于查詢JSON格式的日志數據
CREATEEXTERNALTABLElogs(
timestampTIMESTAMP,
userVARCHAR,
urlVARCHAR,
statusINT,
response_sizeBIGINT
)
WITH(
format='JSON',
serde_properties='{"timestamp":"yyyy-MM-ddHH:mm:ss"}'
);
--查詢過去一小時內的訪問記錄
SELECTuser,COUNT(*)asvisits
FROMlogs
WHEREtimestamp>=NOW()-INTERVAL'1'HOUR
GROUPBYuser
ORDERBYvisitsDESC
LIMIT10;在這個例子中,我們首先創(chuàng)建了一個連接到HDFS的目錄,然后定義了一個外部表logs,用于存儲JSON格式的日志數據。接著,我們使用SQL查詢語句來分析過去一小時內的用戶訪問行為,通過WHERE子句過濾時間范圍,并使用GROUPBY和COUNT函數來統(tǒng)計每個用戶的訪問次數。5.2批處理查詢示例Presto在數據湖中的另一個重要應用是進行批處理查詢,這通常用于大規(guī)模數據的分析和報告生成。Presto能夠處理PB級別的數據量,同時保持高查詢性能,這使得它成為數據湖中進行批處理查詢的理想工具。5.2.1例子:分析銷售數據假設我們有一個數據湖,其中存儲了公司的銷售數據,數據以Parquet格式存儲,我們想要分析過去一年的銷售情況,找出銷售額最高的產品類別。下面是一個使用Presto進行批處理查詢的例子:--創(chuàng)建連接到HDFS的目錄
CREATECATALOGhdfs
WITH(
connector='hdfs',
path='hdfs://localhost:8020/user/presto/sales'
);
--創(chuàng)建外部表,用于查詢Parquet格式的銷售數據
CREATEEXTERNALTABLEsales(
product_categoryVARCHAR,
sales_amountDOUBLE,
sale_dateDATE
)
WITH(
format='PARQUET'
);
--查詢過去一年的銷售數據,找出銷售額最高的產品類別
SELECTproduct_category,SUM(sales_amount)astotal_sales
FROMsales
WHEREsale_date>=DATE'2022-01-01'ANDsale_date<DATE'2023-01-01'
GROUPBYproduct_category
ORDERBYtotal_salesDESC
LIMIT1;在這個例子中,我們首先創(chuàng)建了一個連接到HDFS的目錄,然后定義了一個外部表sales,用于存儲Parquet格式的銷售數據。接著,我們使用SQL查詢語句來分析過去一年的銷售情況,通過WHERE子句過濾時間范圍,并使用GROUPBY和SUM函數來計算每個產品類別的總銷售額,最后使用ORDERBY和LIMIT來找出銷售額最高的產品類別。通過上述例子,我們可以看到Presto在數據湖中的應用,無論是實時數據分析還是批處理查詢,Presto都能夠提供高效、靈活的查詢能力,使得數據湖成為企業(yè)數據處理和分析的中心。6最佳實踐與案例研究6.1數據湖上的Presto部署在數據湖環(huán)境中部署Presto,可以實現對大量、多樣化數據的高效查詢和分析。數據湖通常存儲非結構化、半結構化和結構化數據,而Presto的多數據源支持能力使其成為處理這種復雜數據環(huán)境的理想工具。下面,我們將通過一個具體的部署示例,來了解如何在數據湖上配置和使用Presto。6.1.1部署環(huán)境硬件需求:至少3臺服務器,用于Presto的協(xié)調器和工作節(jié)點。軟件需求:Presto342,Hadoop2.7.3,Hive1.2.1。6.1.2配置Presto安裝Hadoop和Hive:數據湖通?;贖adoop生態(tài)系統(tǒng),因此首先需要在所有服務器上安裝Hadoop和Hive。配置Presto協(xié)調器:在協(xié)調器服務器上,編輯/etc/presto/perties文件,設置以下參數:node.environment=production
node.data-dir=/var/lib/presto/data
node.log-dir=/var/log/presto配置Presto工作節(jié)點:在工作節(jié)點上,除了上述配置,還需在perties中添加:node-coordinator=false添加Hive連接器:在協(xié)調器和工作節(jié)點上,編輯/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 律所托管輔合同范本
- 書桌采購合同范本
- 制定合同范本意義
- 瓷磚鋪貼施工合同范本
- 南水北調供水合同范本
- 蘇州市勞動合同范本
- 包月鮮花合同范本
- 樂隊駐唱合同范本
- 合作養(yǎng)魚協(xié)議合同范本
- 合伙安裝水電合同范本
- 商業(yè)街招商運營方案
- 奶牛外貌線性評定方法與標準課件
- 生物學專業(yè)英語教學課件
- 空乘化妝技巧與形象塑造高職PPT完整全套教學課件
- CAD基礎教程課件
- 我的阿斯伯格綜合征
- 城市軌道交通服務禮儀和意識基本知識專題培訓課件
- 范本誡勉談話登記表
- 蘇教版科學2023三年級下冊全冊教案教學設計及反思
- 中國傳媒大學-主持人即興口語訓練-課件-1
- 【武漢版】生命安全教育五年級第19課《別讓皮膚受傷害》教學設計
評論
0/150
提交評論