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

正文內(nèi)容

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

2025-07-15 03:30 上一頁面

下一頁面
  

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