freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

并行etl工具可擴(kuò)展技術(shù)的研究與開(kāi)發(fā)-資料下載頁(yè)

2025-06-24 03:30本頁(yè)面
  

【正文】 educe作業(yè)相關(guān)的參數(shù),包括map數(shù)、reduce數(shù)、是否使用Combiner或Reducer以及自定義的MapReduce Java代碼等。圖43自定義MR Java組件前臺(tái)界面2. 后臺(tái)實(shí)現(xiàn)后臺(tái)接收前臺(tái)傳過(guò)來(lái)的代碼,將其寫入到特定的目錄下面,生成Java源代碼文件。通過(guò)JavaCompiler進(jìn)行編譯時(shí)可以指定一個(gè)輸出源,編譯過(guò)程中出現(xiàn)的錯(cuò)誤信息將被寫入到這個(gè)輸出源。如果編譯通過(guò),那么在特定路徑下新建一個(gè)Jar文件,將主工程jar包里面除自定義MapReduce外的所有文件拷貝到該Jar文件。構(gòu)建完畢后,發(fā)送成功的信息給前臺(tái),而這個(gè)Jar文件的路徑通過(guò)setJar()方法指定給MapReduce任務(wù)。(說(shuō)明:主工程jar包中包含了自定義MR Java代碼的Driver、Mapper、)如果編譯不通過(guò),讀取上述輸出源中的錯(cuò)誤信息并發(fā)送給前臺(tái)展示。3. 處理流程圖44 自定義MR Java組件執(zhí)行流程 自定義MR Jar組件ETL工具不提供驅(qū)動(dòng)程序,而是將驅(qū)動(dòng)程序和Mapper、Reducer等類一起編譯打包,后臺(tái)接收后解析jar包,查找指定的驅(qū)動(dòng)程序類并執(zhí)行其main方法。該實(shí)現(xiàn)機(jī)制類似于在外殼環(huán)境下使用如下命令:hadoop jar arguments1. 前臺(tái)實(shí)現(xiàn)前臺(tái)界面接收MapReduce任務(wù)相關(guān)的參數(shù),包括map數(shù)、reduce數(shù)以及jar包地址等。圖45 自定義MR Jar組件前臺(tái)界面2. 后臺(tái)實(shí)現(xiàn)后臺(tái)接收前臺(tái)傳過(guò)來(lái)的參數(shù)和jar文件,將jar文件放到特定的目錄,并利用自定義的類加載器加載jar包中的類,然后利用Java反射機(jī)制運(yùn)行驅(qū)動(dòng)類中的main方法。3. 處理流程圖46 自定義MR Jar組件執(zhí)行流程 并行ETL工具的集成對(duì)Hive和Pig的集成主要考慮以下幾個(gè)方面的問(wèn)題:功能組件的設(shè)計(jì)、元數(shù)據(jù)處理的遷移和管理、工作流的解析。 功能組件的實(shí)現(xiàn)針對(duì)Hive和Pig各自不同的語(yǔ)言特點(diǎn),設(shè)計(jì)不同的功能組件,使得由這些功能組件構(gòu)建的ETL工作流(即一個(gè)有向無(wú)環(huán)圖)可以被解析成具有相同邏輯的Hive或Pig腳本并能提交給執(zhí)行引擎執(zhí)行。1. Hive的基本操作對(duì)于Hive,要將HQL腳本按照其執(zhí)行邏輯進(jìn)行語(yǔ)句的拆分,分離出粒度更細(xì)的基本操作,然后將這些基本操作對(duì)應(yīng)到功能組件上。下面的圖示顯示了粒子操作劃分的基本思路:圖47 HQL腳本拆解流程示例在具體的實(shí)現(xiàn)方面,對(duì)Hive的基本操作進(jìn)行分類和篩選,分類的結(jié)果如下:1) 元數(shù)據(jù)操作類:主要包括建表、修改表結(jié)構(gòu)、刪除表三種語(yǔ)句。216。 建表: CREATE [EXTERNAL] TABLE tableName(col1 type1, col2 type2,…) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’ LINE TERMINATED BY ‘\n’ LOCATION ‘/dataDir’ [PARTITIONED BY (key1 type1, key2 type2,…)]。216。 修改表結(jié)構(gòu): ALTER TABLE tableName RENAME TO newname。 ALTER TABLE tableName ADD COLUMNS (col3 type3, col4 type4)。 ALTER TABLE tableName ADD PARTITION (key1=39。value139。, key2=39。value239。) location 39。/location139。 PARTITION (key1=39。value339。, key2=39。value439。) location 39。/ location239。 ALTER TABLE tableName DROP PARTITION (key1=39。value139。, key2=39。value239。)。 ALTER TABLE tableName CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_ment] [FIRST|AFTER column_name]。 (備注:對(duì)列的改變只會(huì)修改 Hive 的元數(shù)據(jù),而不會(huì)改變實(shí)際數(shù)據(jù)。用戶應(yīng)該確保元數(shù)據(jù)的定義和實(shí)際數(shù)據(jù)結(jié)構(gòu)的一致性) 考慮到實(shí)際應(yīng)用中修改表結(jié)構(gòu)的操作并不常用,因此暫不考慮這部分操作。216。 刪除表: DROP TABLE tableName。(備注:外部表只刪表結(jié)構(gòu),內(nèi)部表會(huì)同時(shí)刪除數(shù)據(jù);該操作可以作為選項(xiàng)提供給用戶,在流程結(jié)束時(shí)根據(jù)此選項(xiàng)配置決定是否刪除表以及數(shù)據(jù))2) 實(shí)際操作類:實(shí)際完成對(duì)數(shù)據(jù)進(jìn)行處理所涉及的操作。216。 INSERT 操作: INSERT [OVERWRITE|INTO] TABLE tableName216。 SELECT操作: SELECT [DISTINCT] column_exp1, column_exp1,… from table1。216。 GROUP BY操作: SELECT aggKey1,aggKey2,…,aggExpression1, aggExpression2… FROM tableName GROUP BY aggKey1,aggKey2,…。216。 WHERE操作: SELECT * FROM table1 WHERE age20。216。 JOIN操作: SELECT , FROM table1 a {LEFT|RIGHT|FULL} [OUTER] JOIN table2 b on (=)。 SELECT FROM table1 a LEFT SEMI JOIN table2 b on (=)。(備注:這種類型的JOIN操作的應(yīng)用場(chǎng)景類似于SQL中IN后面跟一個(gè)子查詢的場(chǎng)景,其SELECT子句中不能有右表的字段存在。另外,隨著Hive優(yōu)化機(jī)制的日益完善,一些自動(dòng)化的識(shí)別技術(shù)被應(yīng)用于對(duì)系統(tǒng)資源和輸入數(shù)據(jù)規(guī)模等信息的探查,進(jìn)而基于這些信息進(jìn)行查詢計(jì)劃的優(yōu)化。以JOIN為例,用戶不再需要顯式地將小表放在左邊,也不用顯式地指定是否使用map端的JOIN,Hive會(huì)自動(dòng)探查表的大小從而將小表移到合適的位置或者在內(nèi)存夠用的情況下自動(dòng)進(jìn)行map端的JOIN。盡管目前像SELECT /*+ MAPJOIN(things) */ sales.*, things.* FROM salse JOIN things ON (=) 這樣的語(yǔ)句還可以使用并且在某些情況下生成的MR查詢計(jì)劃仍要優(yōu)于自動(dòng)優(yōu)化生成的MR查詢計(jì)劃,但是自動(dòng)優(yōu)化技術(shù)的優(yōu)勢(shì)已經(jīng)顯現(xiàn),對(duì)于相對(duì)簡(jiǎn)單的查詢,自動(dòng)優(yōu)化的結(jié)果已經(jīng)完全滿足需求,因此,本論文將不考慮在組件中添加對(duì)這樣一種形式的查詢語(yǔ)句的支持。)216。 UNION ALL操作: select_Statement UNION ALL select_Statement [UNION ALL select_Statement]。(備注:select_Statement表示SELECT查詢語(yǔ)句)216。 ORDER BY操作: SELECT * FROM table1 ORDER BY id [ASC|DESC]。 (備注:ORDER BY保證全部的輸出有序。 = strict 模式下,一些危險(xiǎn)的查詢操作不能進(jìn)行。因?yàn)镺RDER BY為了保證全部的輸出有序,map端過(guò)來(lái)的所有數(shù)據(jù)都會(huì)被傳給同一個(gè)Reducer進(jìn)行reduce操作,如果在數(shù)據(jù)量大的情況下會(huì)出現(xiàn)負(fù)荷過(guò)重?zé)o法輸出結(jié)果的情況,因此屬于危險(xiǎn)操作。此時(shí)ORDER BY必須指定 LIMIT,否則執(zhí)行會(huì)報(bào)錯(cuò))216。 SORT BY操作: SELECT * FROM table1 SORT BY id [ASC|DESC] (備注:SORT BY只保證每個(gè)Task的輸出有序)216。 DISTRIBUTE BY操作: SELECT * FROM table1 DISTRIBUTE BY id;(備注:將具有同樣id的記錄放到同一個(gè)節(jié)點(diǎn)上)216。 CLUSTER BY操作: SELECT * FROM table1 CLUSTER BY id;(備注:相當(dāng)于SORT BY和DISTRIBUTE BY一起對(duì)同樣的字段進(jìn)行操作;因?yàn)镺RDER BY、SORT BY、DISTRIBUTE BY和CLUSTER BY功能上有重合,所以將它們合并到一個(gè)組件中并在組件中內(nèi)置其相互關(guān)系,保證用戶不會(huì)同時(shí)使用有沖突的操作)216。 LIMIT操作: SELECT col1, col2 FROM table1 LIMIT limit_num。3) 擴(kuò)展功能類:216。 參數(shù)設(shè)置:SET =strict。216。 添加UDF的jar文件:ADD JAR ‘/path/’。216。 創(chuàng)建臨時(shí)函數(shù)名:CREATE TEMPORARY FUNCTION funcName AS ‘’。216。 MapReduce腳本: 添加腳本文件:ADD FILE ‘/path/’。 使用腳本文件:TRANSFORM操作和MAP、REDUCE操作均被設(shè)計(jì)用來(lái)使用腳本進(jìn)行數(shù)據(jù)處理。(備注:因?yàn)槭腔贖adoop Streaming技術(shù)實(shí)現(xiàn),而Streaming的性能相對(duì)于寫UDF要低不少,所以暫時(shí)不予考慮)基于上述分析,本文共實(shí)現(xiàn)10個(gè)Hive組件,其名稱及配置參數(shù)如下表所示:表41 Hive組件及配置參數(shù)示意表操作名參數(shù)參數(shù)意義Readlocation輸入數(shù)據(jù)路徑fieldSep字段分隔符lineSep行分隔符isInternal是否內(nèi)部表partitionKeys分區(qū)鍵tableName表名fieldsInfo字段信息,包括字段名和字段類型Setparameters參數(shù)名和對(duì)應(yīng)的參數(shù)值addPaths添加的資源對(duì)應(yīng)的文件路徑tempFunctions臨時(shí)函數(shù)名以及對(duì)應(yīng)的UDF類SelectoutputExpressions輸出字段信息,包括表達(dá)式、表達(dá)式別名和表達(dá)式返回值類型useDistinct是否去重WhereconditionExpression過(guò)濾表達(dá)式GroupByoutputInfo輸出字段信息,包括表達(dá)式、表達(dá)式別名和表達(dá)式返回值類型aggKeys聚集鍵值JoinoutputInfo輸出字段信息,包括表達(dá)式、表達(dá)式別名和表達(dá)式返回值類型joinType關(guān)聯(lián)類型,包括內(nèi)連接、外連接和左半連接joinExpression關(guān)聯(lián)表達(dá)式,=SortByorder_sortExpressionOrder By或者Sort By表達(dá)式信息cluster_distributeExpressionCluster By或者Distribute By表達(dá)式信息LimitlimitNum輸出條數(shù)UnionAlloutputInfo輸出字段信息,包括字段名和字段類型Storelocation輸入數(shù)據(jù)路徑fieldSep字段分隔符lineSep行分隔符isInternal是否內(nèi)部表partitionKeys分區(qū)鍵tableName表名fieldsInfo字段信息,包括字段名和字段類型overwrite是否覆蓋原來(lái)的數(shù)據(jù)2. Pig的基本操作對(duì)于Pig,因?yàn)镻ig Latin本身屬于流程式語(yǔ)言,所以只需將其實(shí)現(xiàn)不同功能的語(yǔ)句對(duì)應(yīng)成不同的功能組件即可,然后按照該語(yǔ)句的語(yǔ)法結(jié)構(gòu),為功能組件配置對(duì)應(yīng)的參數(shù)輸入接口即可。下面的圖示顯示了粒子操作劃分的基本思路:圖48 Pig Latin腳本拆解流程示例在具體的實(shí)現(xiàn)方面,同處理Hive一樣,對(duì)涉及到的基本操作進(jìn)行分類和篩選,分類的結(jié)果如下:1) 元數(shù)據(jù)操作類:相比于Hive要簡(jiǎn)單需要,因?yàn)镻ig不保存元數(shù)據(jù),臨時(shí)用臨時(shí)設(shè)置元數(shù)據(jù)。216。 設(shè)置元數(shù)據(jù):alias=LOAD 39。data39。 [USING function] [AS schema]。 USING子句用來(lái)指定序列化和反序列化的方式,可使用內(nèi)嵌的也可以使用自定義的; schema在省略的情況下會(huì)根據(jù)默認(rèn)的行分隔符和字段分隔符以及默認(rèn)的數(shù)據(jù)類型來(lái)解析數(shù)據(jù),同時(shí)生成的元數(shù)據(jù)也沒(méi)有字段名信息。因?yàn)镻ig支持以字段序號(hào)的方式來(lái)訪問(wèn)字段,因此這種方式并不為錯(cuò)。但是這種靈活性在字段數(shù)較多邏輯較復(fù)雜的時(shí)候容易出錯(cuò),因此本次集成將嚴(yán)格定義元數(shù)據(jù)。2) 實(shí)際操作類:實(shí)際完成查詢操作涉及的語(yǔ)句。216。 FILTER操作: alias = FILTER alias1 BY condition_expression。216。 GROUP操作: alias = GROUP alias1 { ALL | BY expression} [USING 39。collected39。 | 39。merge39。][PARTITION BY partitioner] [PARALLEL n]。 區(qū)別于Hive的GROUP BY操作,Pig的GROUP操作確實(shí)只完成了聚集的操作,并沒(méi)有進(jìn)行匯總。Hive的絕大多數(shù)基本操作都離不開(kāi)SELECT操作,因此,其GROUP BY必須借助SELECT才能完成聚集匯總的操作。而Pig的每一個(gè)基本操作都是獨(dú)立的,均不需要和其他基本操作發(fā)生任何聯(lián)系,每個(gè)操作都可以進(jìn)行自己的輸出。216。 COGROUP操作: alias = COGROUP alias1 { ALL | BY expression}[INNER], alias2 { ALL
點(diǎn)擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1