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

正文內(nèi)容

并行etl工具可擴(kuò)展技術(shù)的研究與開發(fā)-全文預(yù)覽

  

【正文】 s.*, 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ǔ)句的支持。 SELECT FROM table1 a LEFT SEMI JOIN table2 b on (=)。216。 SELECT aggKey1,aggKey2,…,aggExpression1, aggExpression2… FROM tableName GROUP BY aggKey1,aggKey2,…。 SELECT操作:(備注:外部表只刪表結(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)行處理所涉及的操作。 考慮到實(shí)際應(yīng)用中修改表結(jié)構(gòu)的操作并不常用,因此暫不考慮這部分操作。value139。) location 39。 PARTITION (key1=39。, key2=39。 ALTER TABLE tableName ADD COLUMNS (col3 type3, col4 type4)。216。下面的圖示顯示了粒子操作劃分的基本思路:圖47 HQL腳本拆解流程示例在具體的實(shí)現(xiàn)方面,對(duì)Hive的基本操作進(jìn)行分類和篩選,分類的結(jié)果如下:1) 元數(shù)據(jù)操作類:主要包括建表、修改表結(jié)構(gòu)、刪除表三種語(yǔ)句。圖45 自定義MR Jar組件前臺(tái)界面2. 后臺(tái)實(shí)現(xiàn)后臺(tái)接收前臺(tái)傳過來的參數(shù)和jar文件,將jar文件放到特定的目錄,并利用自定義的類加載器加載jar包中的類,然后利用Java反射機(jī)制運(yùn)行驅(qū)動(dòng)類中的main方法。構(gòu)建完畢后,發(fā)送成功的信息給前臺(tái),而這個(gè)Jar文件的路徑通過setJar()方法指定給MapReduce任務(wù)。1. 前臺(tái)實(shí)現(xiàn)前臺(tái)界面接收與MapReduce作業(yè)相關(guān)的參數(shù),包括map數(shù)、reduce數(shù)、是否使用Combiner或Reducer以及自定義的MapReduce Java代碼等。在本系統(tǒng)中,用戶在瀏覽器中構(gòu)建ETL處理流程,流程對(duì)應(yīng)的XML文件通過HttpService技術(shù)傳遞給服務(wù)器端,服務(wù)器端解析XML文件并通過HttpService返回轉(zhuǎn)換完腳本的流程文件,瀏覽器端再解析該流程文件并顯示給用戶,用戶可以對(duì)腳本進(jìn)行微調(diào),之后再選擇運(yùn)行流程,服務(wù)器端就會(huì)解析流程并按照一定的順序執(zhí)行,執(zhí)行的情況還會(huì)反饋給用戶。界面層與應(yīng)用邏輯層通過HttpService的方式交互。Hive和Pig放在這一層對(duì)HQL和Pig Latin腳本執(zhí)行算法提供支持。 圖41可擴(kuò)展并行ETL工具系統(tǒng)架構(gòu)圖系統(tǒng)架構(gòu)由下至上分為四個(gè)部分:1) 平臺(tái)層:Hadoop集群,提供云存儲(chǔ)(HDFS)和并行計(jì)算(MapReduce)支持,以Hadoop API的方式供并行算法層調(diào)用。因?yàn)镠ive和Pig都基于MapReduce計(jì)算框架,因此優(yōu)化規(guī)則的設(shè)計(jì)和實(shí)現(xiàn)機(jī)制有比較多的共同點(diǎn)。例如,LogicalExpressionSimplifier對(duì)應(yīng)優(yōu)化規(guī)則FilterLogicExpressionSimplifier,它只針對(duì)FILTER操作,所以其buildPattern方法只包含了一個(gè)LOFilter。 match方法的邏輯:取出pattern的所有葉子結(jié)點(diǎn),使用下面的方法:在plan中尋找和pattern的第一個(gè)葉子結(jié)點(diǎn)匹配的結(jié)點(diǎn),如果葉子數(shù)大于1,則比較它們的兄弟結(jié)點(diǎn),如果兄弟也匹配,則所有這些結(jié)點(diǎn)全部被保存到一個(gè)List中;然后調(diào)用Rule內(nèi)部類PatternMatchOperatorPlan的check方法,針對(duì)整個(gè)pattern而非只是葉子來查找匹配的子結(jié)構(gòu),并將找到的結(jié)果保存下來。2. ,在PlanOptimizer的子類LogicalPlanOptimizer中,規(guī)則集列表被實(shí)例化為一個(gè)ArrayList,優(yōu)化規(guī)則集被按一定順序添加到該列表中。總的說來,整個(gè)過程包括如下幾個(gè)方面:計(jì)劃的遍歷方式、規(guī)則的選擇方式和規(guī)則的應(yīng)用方式。之后會(huì)按序調(diào)用這些優(yōu)化規(guī)則的transform方法實(shí)現(xiàn)優(yōu)化[15]。圖34 腳本執(zhí)行流程圖 Hive常用優(yōu)化規(guī)則下表列出了常用的Hive優(yōu)化規(guī)則和對(duì)應(yīng)的參數(shù)以及優(yōu)化規(guī)則轉(zhuǎn)換類。經(jīng)過優(yōu)化的邏輯計(jì)劃又被轉(zhuǎn)換成物理執(zhí)行計(jì)劃,物理執(zhí)行計(jì)劃再經(jīng)過一次優(yōu)化后,特定的拆分規(guī)則被應(yīng)用,物理計(jì)劃被劃分成一個(gè)一個(gè)的階段,分別對(duì)應(yīng)MapReduce的Map和Reduce階段。與Hive不同的是,Pig并不是數(shù)據(jù)庫(kù)工具,因此無法通過JDBC這樣的方式來訪問Pig,而只能通過Pig提供的JAVA API以嵌入的方式來執(zhí)行Pig Latin腳本。出于性能的考慮,商用ETL工具都沒有選擇Pig作為其底層執(zhí)行引擎,而開源的Kettle和Talend均選擇了對(duì)Pig進(jìn)行集成。圖32 Kettle SQL組件Kettle并沒有專門針對(duì)Hive集成做特別多的額外的工作,而是將與Hive相關(guān)的配置添加到兩個(gè)已有的組件中以完成擴(kuò)展:一個(gè)組件叫做“DB連接”,添加了連接Hive的配置選項(xiàng);一個(gè)組件叫做“SQL”,這個(gè)組件并沒有做改動(dòng),只是需要選擇對(duì)應(yīng)的Hive數(shù)據(jù)庫(kù)連接。為了添加處理大數(shù)據(jù)的能力,傳統(tǒng)ETL工具基本選擇了集成已有并行ETL工具的方式,這樣比較快捷,傳統(tǒng)ETL工具主要關(guān)注如何集成,而不必再進(jìn)行并行ETL模塊的開發(fā)?;谏厦娴姆治觯饕ㄟ^上述兩種方法來實(shí)現(xiàn)可擴(kuò)展組件。 //job配置信息setJar()方法接受一個(gè)String類型的參數(shù),表示jar包對(duì)應(yīng)的本地路徑。 //設(shè)置job名稱()??截惖紿DFS上的這些資源文件又會(huì)被分配了任務(wù)的從節(jié)點(diǎn)拷貝到本地,進(jìn)而構(gòu)造啟動(dòng)JVM的參數(shù),然后啟動(dòng)一個(gè)新的JVM來運(yùn)行任務(wù)。驅(qū)動(dòng)程序還要負(fù)責(zé)指定各階段對(duì)應(yīng)的具體的Mapper類、Combiner類和Reducer類,并完成整個(gè)作業(yè)的提交和后續(xù)處理工作。由此可以看出,以提供可擴(kuò)展組件的方式來實(shí)現(xiàn)擴(kuò)展ETL工具功能的方式較為普遍。開源的Kettle和Talend也都提供了一些可擴(kuò)展組件以支持一些可定制的ETL邏輯的實(shí)現(xiàn)。本章重點(diǎn)進(jìn)行并行ETL工具可擴(kuò)展技術(shù)的研究,結(jié)合實(shí)際應(yīng)用需求,提出可行的在并行ETL工具中可以應(yīng)用的可擴(kuò)展技術(shù)并總結(jié)為如下三個(gè)主要方面:可擴(kuò)展組件技術(shù)、開源ETL工具集成技術(shù)和優(yōu)化規(guī)則可擴(kuò)展技術(shù)。Hadoop在并行計(jì)算中的地位可謂非常重要,而本文也是基于Hadoop來實(shí)行對(duì)大數(shù)據(jù)進(jìn)行并行ETL處理。另外,這些商用ETL工具均采用了C/S架構(gòu),而開源ETL工具在提供大數(shù)據(jù)支持之后也屬于一種C/S架構(gòu)。Hive處理的數(shù)據(jù)為表結(jié)構(gòu),需要進(jìn)行元數(shù)據(jù)管理,其元數(shù)據(jù)存在關(guān)系型數(shù)據(jù)庫(kù)Derby或者M(jìn)ySQL中,用戶可以通過Hive提供的DDL來改變數(shù)據(jù)對(duì)應(yīng)的元數(shù)據(jù)。為了簡(jiǎn)化工作,本論文采用開源的表達(dá)式引擎。傳統(tǒng)的ETL工具里面均封裝了一些優(yōu)化規(guī)則,因?yàn)閿?shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)架構(gòu)等方面的差異,不同ETL工具的優(yōu)化規(guī)則不盡相同,對(duì)于相同的優(yōu)化規(guī)則,其最后的實(shí)現(xiàn)機(jī)制也會(huì)不盡相同。對(duì)同樣的數(shù)據(jù),不同的應(yīng)用中可以指定不同的元數(shù)據(jù),顯得比較靈活。 PigPig是Yahoo!貢獻(xiàn)的Apache開源項(xiàng)目,是一個(gè)基于Hadoop的大規(guī)模數(shù)據(jù)分析平臺(tái)。相對(duì)于自己編寫MapReduce代碼,其優(yōu)點(diǎn)是學(xué)習(xí)成本低,代碼量小,用戶可以通過少數(shù)的HQL語(yǔ)句快速實(shí)現(xiàn)較為復(fù)雜的MapReduce數(shù)據(jù)處理邏輯。性能方面,Hive接近自己編寫的代碼,而Pig主要是比較好上手,性能上略差些。這種方式因?yàn)閷?duì)于處理邏輯和數(shù)據(jù)結(jié)構(gòu)的了解,可以編寫最有針對(duì)性的代碼進(jìn)而可以實(shí)現(xiàn)較優(yōu)的性能,但是開發(fā)工作量大,調(diào)試過程復(fù)雜,對(duì)于多樣的需求在工作量、準(zhǔn)確性和靈活性方面均無法滿足。同時(shí),MapReduce也提供了相應(yīng)的接口給開發(fā)人員去自己實(shí)現(xiàn)讀寫、分發(fā)等功能以完成更復(fù)雜的操作。reduce方法包含reduce端的主要處理邏輯,每次處理一個(gè)key,Itoratorvalue形式的對(duì)象,其結(jié)果被輸出到HDFS。1. MapReduce執(zhí)行框架圖22 MapReduce執(zhí)行框架如圖22所示, MapReduce執(zhí)行流程如下:一個(gè)大的輸入文件被分成多個(gè)分片,每個(gè)分片對(duì)應(yīng)一個(gè)map task,map task中的map方法包含map端的主要處理邏輯。同時(shí),HDFS還提供一些與本地文件系統(tǒng)進(jìn)行交互的功能,如從本地加載數(shù)據(jù)到HDFS和從HDFS獲取數(shù)據(jù)到本地等。NameNode作為數(shù)據(jù)訪問的入口,負(fù)責(zé)集群上數(shù)據(jù)的管理維護(hù)工作。一個(gè)Hadoop集群主要包括一個(gè)用于管理這個(gè)文件系統(tǒng)的目錄節(jié)點(diǎn)和多個(gè)用于存儲(chǔ)實(shí)際數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)。Apache Hadoop開源項(xiàng)目就是克隆了這一框架,主要由Hadoop Distributed File System(HDFS)和MapReduce兩部分組成:HDFS是Google File System(GFS)的開源實(shí)現(xiàn);MapReduce是Google MapReduce的開源實(shí)現(xiàn)。ETL的方式即先從不同的數(shù)據(jù)源中抽取數(shù)據(jù),放到ETL工具中來,ETL工具完成相應(yīng)的轉(zhuǎn)化后將處理的結(jié)果載入到目標(biāo)數(shù)據(jù)集中(通常為數(shù)據(jù)倉(cāng)庫(kù))。轉(zhuǎn)換在ETL處理過程中占比最大,因此,ETL工具均會(huì)提供豐富的轉(zhuǎn)換功能,如記錄篩選、字段選擇、數(shù)據(jù)匯總、數(shù)據(jù)關(guān)聯(lián)等。具體而言:抽取主要是針對(duì)不同的數(shù)據(jù)源,充分理解數(shù)據(jù)的定義,設(shè)計(jì)不同的數(shù)據(jù)抽取方式,進(jìn)行必要的數(shù)據(jù)類型轉(zhuǎn)換,選擇合適的數(shù)據(jù)傳輸機(jī)制,如數(shù)據(jù)庫(kù)直連、通過FTP接口機(jī)等。第四章是并行ETL工具可擴(kuò)展技術(shù)的研究:主要針對(duì)三種擴(kuò)展方式進(jìn)行編碼實(shí)現(xiàn),介紹了系統(tǒng)架構(gòu)以及實(shí)現(xiàn)的細(xì)節(jié)。本論文的主要成果包括:1) 實(shí)現(xiàn)一種自定義MapReduce代碼嵌入機(jī)制,包括兩個(gè)可定制組件,可以讓用戶實(shí)現(xiàn)將自己定義的MapReduce操作應(yīng)用于并行ETL工具中;2) 提供一整套Hive、Pig組件,支持用戶在圖形用戶界面中以構(gòu)建工作流的方式設(shè)計(jì)基于Hive或Pig的ETL工作流而不僅僅是局限于使用腳本,即對(duì)Hive和Pig進(jìn)行更深入的整合,對(duì)并行ETL工具進(jìn)行功能擴(kuò)展;3) 設(shè)計(jì)實(shí)現(xiàn)了一套規(guī)則表示和擴(kuò)展機(jī)制,方便用戶在使用過程中將提煉的規(guī)則集成到現(xiàn)有系統(tǒng)中。另一方面,Hive和Pig的實(shí)現(xiàn)機(jī)制均是將腳本解析為MapReduce執(zhí)行計(jì)劃,在解析的過程中涉及到一套優(yōu)化規(guī)則以便使最后的MapReduce執(zhí)行計(jì)劃性能上更優(yōu)?;谏鲜隹紤]和作者參與的項(xiàng)目的實(shí)際需求,本文設(shè)計(jì)實(shí)現(xiàn)的并行ETL工具采用了B/S的軟件架構(gòu),相關(guān)的研究和開發(fā)工作也均是基于此種模式。通過上面的分析不難看出,圖形用戶界面仍舊是ETL工具的首選,并且都趨向于集成開源并行ETL工具,市場(chǎng)上缺少基于B/S模式的并行ETL工具,另外,ETL工具通過提供一些可定制組件來實(shí)現(xiàn)功能擴(kuò)展。Talend提供組件運(yùn)行HQL腳本和Pig Latin腳本,同時(shí)針對(duì)Pig開發(fā)了一套組件,支持拖拽工作流以定義ETL處理邏輯[6]。云計(jì)算時(shí)代,傳統(tǒng)的商用ETL工具和開源ETL工具均開始集成開源并行ETL工具以完成功能上的擴(kuò)展,但是集成方式各異,集成的深度也有所不同。開發(fā)人員基于Hadoop開發(fā)了不少針對(duì)大數(shù)據(jù)的并行ETL工具并且這些工具均具有一定程度的可擴(kuò)展性。在工具本身的可擴(kuò)展性方面,PowerCenter提供兩種類型的可擴(kuò)展組件:Java自編程組件支持用戶定制的Java代碼,用戶自定義組件支持用戶組合常用組件為新組件,可擴(kuò)展組件可以作為工具的組成部分加入到工具中以供后續(xù)使用[7]。用戶可以拖拽功能組件到相應(yīng)的工作區(qū)域并進(jìn)行參數(shù)配置,然后通過在組件之間連有向邊來設(shè)置執(zhí)行的先后關(guān)系以完成ETL流程的設(shè)計(jì)。商用ETL工具盡管功能強(qiáng)大,但是其高昂的價(jià)格也使得一些中小企業(yè)和研究機(jī)構(gòu)對(duì)其望而卻步,一些開源的ETL工具滿足了這些用戶的需求。還有就是,查詢計(jì)劃的優(yōu)化廣泛的應(yīng)用于ETL工具中,如何設(shè)計(jì)優(yōu)化規(guī)則才能使得優(yōu)化規(guī)則具有良好的可擴(kuò)展性值得深入研究。大數(shù)據(jù)技術(shù)離不開數(shù)據(jù)的收集整理,ETL工具負(fù)責(zé)從分布的、異構(gòu)數(shù)據(jù)源中抽取數(shù)據(jù)并對(duì)其進(jìn)行清洗和轉(zhuǎn)換,最后裝載到數(shù)據(jù)集市或數(shù)據(jù)倉(cāng)庫(kù)中,是數(shù)據(jù)挖掘和聯(lián)機(jī)分析處理的基礎(chǔ)[1]?;谶@種設(shè)計(jì)方式,可以很方便地?cái)U(kuò)展優(yōu)化規(guī)則。通過分析總結(jié)Hive和Pig腳本語(yǔ)言的語(yǔ)法特點(diǎn),結(jié)合實(shí)際應(yīng)用需求,選取了一整套基本操作,并針對(duì)性地將基本操作設(shè)計(jì)為功能組件,然后通過分析基本操作間的依賴關(guān)系設(shè)計(jì)和實(shí)現(xiàn)了流程解析模塊,解析出來的腳本擁有和手工編寫的腳本一樣的邏輯。同時(shí),在大數(shù)據(jù)時(shí)代,ETL工具通過整合云計(jì)算技術(shù)以處理海量數(shù)據(jù)。ETL工具通常提供了一些常用的基本操作,但是由于ETL應(yīng)用場(chǎng)景多樣、操作邏輯復(fù)雜,這些通用操作往往并不能滿足用戶的需求,這就要求ETL工具必須具有一定的可擴(kuò)展性,以滿足各種特殊需求。本文開發(fā)基于Hadoop的、B/S模式的并行ETL工具,并研究如何實(shí)現(xiàn)對(duì)并行ETL工具進(jìn)行擴(kuò)展,完成了如下幾項(xiàng)主要工作:通過分析MapReduce并行計(jì)算框架的實(shí)現(xiàn)細(xì)節(jié),設(shè)計(jì)實(shí)現(xiàn)了兩種方案來向現(xiàn)有工具中嵌入定制的MapReduce代碼以完成功能擴(kuò)展從而可以處理復(fù)雜的需求。實(shí)現(xiàn)上是通過將規(guī)則需要匹配的樣式和對(duì)應(yīng)的操作關(guān)聯(lián)起來,將規(guī)則的匹配機(jī)制和計(jì)劃的游走機(jī)制進(jìn)行隔離和抽象。該方法包括數(shù)據(jù)的收集、整理、分析、挖掘等多個(gè)方面,最終的目的是從中獲得有價(jià)值信息并衍化出一種新的商業(yè)模式。另外一方面,基于云計(jì)算技術(shù)的并行ETL產(chǎn)品Hive和Pig使得用戶可以通過寫腳本的方式進(jìn)行ETL操作,不少傳統(tǒng)ETL工具通過集成它們來提供對(duì)大數(shù)據(jù)處理方面的支持,但是支持的程度不一,商用的價(jià)格昂貴,開源的集成度不夠。正因?yàn)镋TL工具的重要性,市場(chǎng)對(duì)ETL工具擁有強(qiáng)烈的需求,ETL工具蘊(yùn)含的商業(yè)價(jià)值不容小覷,一些企業(yè)開發(fā)出功能強(qiáng)大的商用ETL工具并獲得廣泛的使用,這些企業(yè)也從中收獲頗豐。Datastage和PowerCenter都具有友好的圖形用戶界面,提供豐富的ETL操作組件。傳統(tǒng)ETL工具中,商用的都基于 C/S 模式,開源的本來是單機(jī)的,在向大數(shù)據(jù)處理方面做過相應(yīng)擴(kuò)展后也屬于C/S
點(diǎn)擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1