開(kāi)發(fā)指南DataStageEEV20_第1頁(yè)
開(kāi)發(fā)指南DataStageEEV20_第2頁(yè)
開(kāi)發(fā)指南DataStageEEV20_第3頁(yè)
開(kāi)發(fā)指南DataStageEEV20_第4頁(yè)
開(kāi)發(fā)指南DataStageEEV20_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、DataStage Enterprise Edition開(kāi)發(fā)指南v2.0目 錄目錄I1. 引言11.1 編寫(xiě)目的11.2 幫助使用12. 產(chǎn)品概述23. 常規(guī)應(yīng)用33.1 常用組件使用方法33.1.1 Sequential file33.1.2 Annotation73.1.3 Change Capture Stage83.1.4 Copy Stage103.1.5 Filter Stage113.1.6 Funnel Stage123.1.7 Tansformer Stage133.1.8 Sort Stage143.1.9 LookUp Stage153.1.10 Join Stage15

2、3.1.11 LookUp Stage 和 Join Stage的區(qū)別163.1.12 Merge Stage173.1.13 Modify Stage183.1.14 Data Set Stage193.1.15 File Set Stage213.1.16 Lookup File Set Stage223.1.17 OracleEnterprise Stage253.1.18 Aggregator Stage273.1.19 Remove Duplicates Stage293.1.20 Compress Stage303.1.21 Expand Stage313.1.22 Differe

3、nceStage323.1.23 CompareStage353.1.24 SwitchStage363.1.25 Column ImportStage383.1.26 Column ExportStage403.1.27 Teradata Enterprise Stage423.2 常用數(shù)據(jù)庫(kù)的連接443.2.1 Informix數(shù)據(jù)庫(kù)連接443.2.2 Oracle數(shù)據(jù)庫(kù)連接454. 高級(jí)應(yīng)用474.1 DataStage BASIC接口474.2 自定義Stage Type474.2.1 Wrapped Stage474.2.2 Build Stage474.2.3 Custom Sta

4、ge474.3 性能調(diào)優(yōu)47 優(yōu)化策略48 關(guān)鍵問(wèn)題分析52 并行度53 處理建議53 其它54 機(jī)器的對(duì)稱性54 并行調(diào)度測(cè)試說(shuō)明:555. 開(kāi)發(fā)經(jīng)驗(yàn)技巧匯總55 問(wèn)題551. 引言1.1 編寫(xiě)目的IBM DataStage作ODS項(xiàng)目所使用的主要開(kāi)發(fā)工具,在項(xiàng)目中得到了比較充分的應(yīng)用,對(duì)IMB DataStage產(chǎn)品方方面面的功能,都有所涉及。作為對(duì)我們使用本產(chǎn)品的一個(gè)技術(shù)沉淀,我們編寫(xiě)了這個(gè)總結(jié)性質(zhì)的手冊(cè),旨在綜合描述該產(chǎn)品的安裝、常規(guī)應(yīng)用、高級(jí)開(kāi)發(fā)等等項(xiàng)目所涉及到的各個(gè)方面。為項(xiàng)目組內(nèi)部或其他使用該產(chǎn)品的項(xiàng)目組提供一個(gè)全面而綜合的產(chǎn)品操作指導(dǎo),幫助使用者能夠在最短的時(shí)間內(nèi)了解該產(chǎn)品,并

5、上手使用。1.2 幫助使用由于DataStage產(chǎn)品功能強(qiáng)大,配置復(fù)雜,我們不可能在本手冊(cè)中涉及到所有功能,也無(wú)法對(duì)每一個(gè)描述的能夠都給出詳盡的例子。能夠?yàn)殚喿x者穿針引線的整理產(chǎn)品的開(kāi)發(fā)思路,通過(guò)對(duì)常用、基本的功能的描述,讓大家掌握到該產(chǎn)品的使用精髓,并能夠舉一反三的掌握其它本手冊(cè)沒(méi)有介紹的功能。這就是我們的目的。我們通常使用的幫助有如下兩個(gè)途徑。a. 智能化的幫助功能;產(chǎn)品在幾乎所有的操作窗口都有一個(gè)Help鍵,點(diǎn)擊該鍵可以顯示出當(dāng)前使用的界面的功能和各項(xiàng)選項(xiàng)的具體的說(shuō)明和操作方法。DataStage獨(dú)有的智能化的幫助能夠指引你方面的查找到你想要得到的幫助。b. Online Manuals

6、;就是產(chǎn)品安裝后程序組中的DataStage Documents,里面更加綜合、全面的對(duì)整個(gè)產(chǎn)品從普通到高級(jí),從Server版到Enterprise Edition版,從For Windows到For Unix等等方面的詳盡敘述。能夠幫助更加系統(tǒng)、全面的掌握該產(chǎn)品。2. 產(chǎn)品概述DataStage企業(yè)版是原Ascential Software公司所有企業(yè)整合系列產(chǎn)品中關(guān)鍵產(chǎn)品。企業(yè)版支持大容量數(shù)據(jù)的收集、整合和轉(zhuǎn)換,數(shù)據(jù)從簡(jiǎn)單結(jié)構(gòu)到很復(fù)雜的結(jié)構(gòu)?;诟呖蓴U(kuò)展性的軟件架購(gòu),企業(yè)版使得企業(yè)能夠通過(guò)高性能來(lái)解決大部分業(yè)務(wù)問(wèn)題,并行處理大容量數(shù)據(jù)。強(qiáng)大的企業(yè)元數(shù)據(jù)管理能力使得可以在數(shù)據(jù)整合生命周期中在

7、所有工具中共享和使用工具。DataStage企業(yè)版發(fā)布了四個(gè)核心功能來(lái)成功實(shí)施企業(yè)數(shù)據(jù)整合:先進(jìn)的開(kāi)發(fā)和簡(jiǎn)單化的維護(hù);企業(yè)級(jí)別的開(kāi)發(fā)、監(jiān)測(cè)和管理;在吞吐量和性能方面提供了無(wú)限制的高擴(kuò)展的體系架構(gòu);端對(duì)端的企業(yè)級(jí)元數(shù)據(jù)管理。DataStage企業(yè)版提供了全面的功能去最優(yōu)化用戶在建立、升級(jí)和管理數(shù)據(jù)整合架構(gòu)時(shí)的速度、靈活性和效率。DataStage企業(yè)版增強(qiáng)的功能減少了學(xué)習(xí)的周期、簡(jiǎn)單化了管理和優(yōu)化了開(kāi)發(fā)資源的使用,減少了數(shù)據(jù)整合應(yīng)用的開(kāi)發(fā)和維護(hù)周期。結(jié)果,DataStage企業(yè)版使得企業(yè)能夠花更少的時(shí)間開(kāi)發(fā)他們的整合應(yīng)用,更多的時(shí)間是不斷的從中受益。DataStage企業(yè)版使用了Client-s

8、erver架構(gòu),如下所示。圖一、DataState企業(yè)版Client-Server架構(gòu)用戶通過(guò)各個(gè)客戶端工具訪問(wèn)DataStage企業(yè)版的開(kāi)發(fā)、配置和維護(hù)功能。這些工具包括:Designer:用來(lái)建立和編輯DataStage作業(yè)和表的定義。Designer中的“Job Sequencer”控制作業(yè)的執(zhí)行,其他作業(yè)成功完成(或失敗,等)的條件。Administrator:用來(lái)執(zhí)行管理任務(wù),如建立DataStage用戶、建立和刪除工程并且建立清洗標(biāo)準(zhǔn)。Manager:用來(lái)編輯管理用戶工程的DataStage資料庫(kù)。Director:用來(lái)驗(yàn)證、時(shí)序安排、運(yùn)行和監(jiān)測(cè)企業(yè)版作業(yè)。如圖一所示,DataSa

9、ge企業(yè)版的服務(wù)器組件運(yùn)行在一系列的流行服務(wù)器上,如Unix、Windows等。3. 常規(guī)應(yīng)用3.1 常用組件使用方法3.1.1 Sequential file功能特點(diǎn):適用于一般順序文件(定長(zhǎng)或不定長(zhǎng)),可識(shí)別文本文件或IBM大機(jī)ebcdic文件。使用要點(diǎn):l 按照命名規(guī)范命名l 點(diǎn)住文件,雙擊鼠標(biāo),在general說(shuō)明此文件內(nèi)容,格式,存儲(chǔ)目錄等l 修改文件屬性,文件名稱,reject方式等到常用選項(xiàng)(Options): First Line is Column Names當(dāng)此選項(xiàng)為T(mén)rue時(shí),對(duì)于輸入文件,忽略第一行數(shù)據(jù)(系統(tǒng)認(rèn)為第一行數(shù)據(jù)為列名稱);對(duì)于輸出文件,把列名稱寫(xiě)入第一行.

10、Keep File Partitions設(shè)為T(mén)rue,保持所讀文件的分區(qū)信息. Missing File Mode找不到File項(xiàng)所指定的文件時(shí)的處理方式.- Error 找不到文件時(shí)停止運(yùn)行JOB.- OK跳過(guò)此文件- Depends 默認(rèn)為Error,但當(dāng)文件名中含有前綴*的時(shí)候,跳過(guò)此文件. Reject Mode- Continue 拋棄所有rejected rows.- Fail 一旦出現(xiàn)rejected row,中止JOB.- Output 通過(guò)reject link把rejected rows輸出至文件或數(shù)據(jù)庫(kù). Schema FileSequential File Stage默

11、認(rèn)使用Format和Columns中的列定義來(lái)處理文件中的數(shù)據(jù),不過(guò)也可以在此選項(xiàng)指定schema文件用做數(shù)據(jù)的列定義. Report Progess是否以日志形式記錄處理進(jìn)度. Cleanup On FailureJOB失敗時(shí)是否清除中間數(shù)據(jù).l 修改文件格式,比如記錄結(jié)束符是什么,字段分隔符,字符串是用什么區(qū)別等l 輸入此文件字段內(nèi)容重要選項(xiàng): Runtime column propagation?3.1.2 Annotation功能特點(diǎn):一般用于注釋,可利用其背景顏色在job中分顏色區(qū)別不同功能塊使用要點(diǎn):3.1.3 Change Capture Stage功能特點(diǎn):Change Cap

12、ture Stage有兩個(gè)輸入,分別標(biāo)記為before link 及 after link。輸出的數(shù)據(jù)表示before link和after link的區(qū)別,我們稱作change set。Change Capture Stage可以和Change Apply Stage配合使用來(lái)計(jì)算after set。使用要點(diǎn):l key及value的說(shuō)明key值是比較的關(guān)鍵值,value是當(dāng)key值相同是作進(jìn)一步比較用的。l change mode選項(xiàng)說(shuō)明:All keys,Explicit Values 需要指定value,其余字段為keyExplicit Keys&Values key及value都需要

13、指定Explicit Keys,All Values 需要指定key,其余的字段為valuel 輸出策略說(shuō)明Drop Output For CopyFalse:保留before及afte link中key值相同的行True:刪除before及afte link中key值相同的行Drop Output For DeleteFalse:保留before link中有但是after link中沒(méi)有的key值所在的行True:刪除before link中有但是afte link中沒(méi)有的key值所在的行Drop Output For EditFalse:保留key值相同,value不同的行True:刪除

14、key值相同,value不同的行Drop Output For InsertFalse:保留before link中沒(méi)有但afte link中有的key值所在的行True:刪除before link中沒(méi)有但afte link中有的key值所在的行3.1.4 Copy Stage功能說(shuō)明:Copy Stage可以有一個(gè)輸入,多個(gè)輸出。它可以在輸出時(shí)改變字段的順序,但是不能改變字段類(lèi)型。注意:當(dāng)只有一個(gè)輸入及一個(gè)輸出時(shí)最好將Force設(shè)置為T(mén)rue,這樣可以在Designer里看到運(yùn)行結(jié)束,否則將無(wú)法標(biāo)識(shí)運(yùn)行結(jié)束,但不會(huì)影響運(yùn)行結(jié)果數(shù)據(jù)。設(shè)置為FALSE的話,DataStage會(huì)根據(jù)情況對(duì)JOB進(jìn)

15、行優(yōu)化,有可能放棄使用此Stage.3.1.5 Filter Stage功能說(shuō)明:Filter Stage只有一個(gè)輸入,可以有多個(gè)輸出。根據(jù)不同的篩選條件,可以將數(shù)據(jù)輸出到不同的output link。3.1.6 Funnel Stage功能說(shuō)明:將多個(gè)字段相同的數(shù)據(jù)文件合并為一個(gè)單獨(dú)的文件輸出合并策略說(shuō)明:l Continuous Funnel:從每一個(gè)input link中循環(huán)取一條記錄l Sort Funnel:按照Key值排序合并輸出l Sequence:先輸出第一個(gè)input link的數(shù)據(jù),輸出完畢后再輸出第二個(gè)input link的數(shù)據(jù),依此類(lèi)推,直到結(jié)束。(此時(shí)可以通過(guò)調(diào)整li

16、nk Ordering調(diào)整輸出順序)3.1.7 Tansformer Stage功能說(shuō)明:一個(gè)功能極為強(qiáng)大的Stage。有一個(gè)input link,多個(gè)output link,可以將字段進(jìn)行轉(zhuǎn)換,也可以通過(guò)條件來(lái)指定數(shù)據(jù)輸出到那個(gè)output link。在開(kāi)發(fā)過(guò)程中可以使用拖拽。l Constraint及Derivation的區(qū)別Constraint通過(guò)限定條件使符合條件的數(shù)據(jù)輸出到這個(gè)output link。Derivation通過(guò)定義表達(dá)式來(lái)轉(zhuǎn)換字段值。在Constraint及Derivation中可以使用Job parameters及Stage Variables。注意:Transfor

17、mer Stage功能強(qiáng)大,但在運(yùn)行過(guò)程中是以犧牲速度為代價(jià)的。在只有簡(jiǎn)單的變換,拷貝等操作時(shí),最好用Modify Stage,Copy Stage,F(xiàn)ilter Stage等來(lái)替換Transformer Stage。示例Derivation轉(zhuǎn)換表達(dá)式:if (isnull(LK_to_transform.CI_CUST_NO)then 1 else if (IsNull(LK_to_transform.CI_CRLMT_NO) then 2 else 03.1.8 Sort Stage功能說(shuō)明:只能有一個(gè)輸入及一個(gè)輸出,按照指定的Key值進(jìn)行排列??梢赃x擇升序還是降序,是否去除重復(fù)的數(shù)據(jù)等等

18、。Option具體說(shuō)明Allow Duplicates:是否去除重復(fù)數(shù)據(jù)。為False時(shí),只選取一條數(shù)據(jù),當(dāng)Stable Sort為T(mén)rue時(shí),選取第一條數(shù)據(jù)。當(dāng)Sort Unility為UNIX時(shí)此選項(xiàng)無(wú)效。Sort Utility:選擇排序時(shí)執(zhí)行應(yīng)用程序,可以選擇DataStage內(nèi)建的命令或者Unix的Sort命令。Output Statistics:是否輸出排序統(tǒng)計(jì)信息到j(luò)ob日志。Stable Sort:是否對(duì)數(shù)據(jù)進(jìn)行二次整理。Create Cluster Key Change Column:是否為每條記錄創(chuàng)建一個(gè)新的字段:clusterKeyChange。當(dāng)Sort Key Mod

19、e為Dont Sort(Previously Sorted) 或 Dont Sort (Previously Grouped)時(shí),對(duì)于第一條記錄該字段被設(shè)置為1,其余的記錄設(shè)置為0。Create Key Change Column:是否為每一條記錄創(chuàng)建一個(gè)新的字段KeyChange。3.1.9 LookUp Stage功能說(shuō)明:LookUp Stage把數(shù)據(jù)讀入內(nèi)存執(zhí)行查詢操作,將匹配的字段輸出,或者在在符合條件的記錄中修改或加入新的字段。參數(shù)說(shuō)明: Condition中可以通過(guò)BASIC表達(dá)式指定在reference link上做Lookup的前提條件. Condition Not Met指

20、定前提條件不滿足時(shí)的處理方式. Fail 中止JOB,報(bào)Fatal Error錯(cuò)誤. Drop 拋棄此條數(shù)據(jù),繼續(xù)執(zhí)行下一個(gè)lookup. Continue 查找不到的數(shù)據(jù)賦空值,繼續(xù)處理下一行. Reject輸出至Reject link. Lookup Failure指定Lookup操作失敗時(shí)的處理方式. Fail 中止JOB,報(bào)Fatal Error錯(cuò)誤. Drop 拋棄此條數(shù)據(jù),繼續(xù)執(zhí)行下一個(gè)lookup. Continue 查找不到的數(shù)據(jù)賦空值,繼續(xù)處理下一行. Reject輸出至Reject link.3.1.10 Join Stage功能說(shuō)明:將多個(gè)表連接后輸出3.1.11 Loo

21、kUp Stage 和 Join Stage的區(qū)別LookUp Stage將數(shù)據(jù)讀入到內(nèi)存中,所以效率很高,但是占用了較多的物理內(nèi)存。所以當(dāng)reference data比較小的時(shí)候,我們推薦用LookUp Stage;當(dāng)reference data比較大的時(shí)候,我們推薦用Join Stage。3.1.12 Merge Stage功能說(shuō)明:將Merge Key值相同的記錄合并。將其中的一個(gè)輸入設(shè)定為Master,其余的為Update。把Update中Merge Key相同的記錄合并入Master。3.1.13 Modify Stage功能說(shuō)明:Modify stage 只能有一個(gè)輸入及一個(gè)輸出,

22、它可以修改表結(jié)構(gòu):刪除,保留一個(gè)字段;給字段改名;修改字段的數(shù)據(jù)類(lèi)型。Specification的具體用法:刪除一個(gè)字段:DROP columnname , columnname保留一個(gè)字段:KEEP columnname , columnname改變字段:new_columnname:new_type=explicit_conversion_functionold_columnname可用的explicit_conversion_function請(qǐng)參看Parallel Job Developers Guidepage 28-73.1.14 Data Set StageStage類(lèi)型:File

23、 stage功能說(shuō)明:從data set文件中讀取數(shù)據(jù)或者寫(xiě)數(shù)據(jù)到data set文件中,一個(gè)Date Set Stage只能有一個(gè)輸入連接(input link)或者一個(gè)輸出連接(output link)。具體用法:包括Stage Page,Inputs Page,Outputs Page。l Stage Page通常描述了stage的一般信息,諸如名稱等;l Inputs Page描述了即要寫(xiě)入信息的data set文件的詳細(xì)信息;主要是Properties和Column的定義。Properties中配置了文件的存放路徑和更新策略;Column詳細(xì)定義文件中的各個(gè)字段;l Outputs

24、Page描述了讀取信息的data set文件的詳細(xì)信息;操作過(guò)程與Inputs Page類(lèi)似。3.1.15 File Set StageStage類(lèi)型:File stage功能說(shuō)明:從file set文件中讀取數(shù)據(jù)或者寫(xiě)數(shù)據(jù)到file set文件中,一個(gè)File Set Stage只能有一個(gè)輸入連接(input link)、一個(gè)輸出連接(output link)和一個(gè)拒絕連接(rejects link)。并且只能在并行模式下執(zhí)行。具體用法:l Stage Page:對(duì)Stage的基本定義l Inputs Page:主要是Properties和Format的配置Properties的配置:定義文

25、件的存取路徑及其他讀寫(xiě)的相關(guān)的參數(shù)。特別要說(shuō)明的是Options下的Reject Mode的選擇,當(dāng)stage有reject link的時(shí)候,必須選擇Output;沒(méi)有reject link時(shí),可選擇其他兩個(gè)選項(xiàng)。Format的配置:定義了數(shù)據(jù)寫(xiě)到文件中的格式l Outputs Page:對(duì)stage輸出的數(shù)據(jù)字段的描述,另外,reject link的輸出系統(tǒng)將默認(rèn),不需要用戶自己定義字段。3.1.16 LookupFile Set StageStage類(lèi)型:File stage功能說(shuō)明:為執(zhí)行查找操作而創(chuàng)建的參照文件。作為查找的參照數(shù)據(jù),通常在參照數(shù)據(jù)比較大量或者重復(fù)使用率較高的情況下,將參

26、照數(shù)據(jù)生成專門(mén)的Lookup File Set文件,以便提高查找的效率具體用法:l Stage Pagel Inputs Page:主要定義了查找關(guān)鍵字和存放路徑等主要信息創(chuàng)建一個(gè)Lookup File Set文件:l Outputs Page:當(dāng)作為參照數(shù)據(jù)進(jìn)行查找操作時(shí),因?yàn)槲募且呀?jīng)生成好的,所以在這里不需要再做詳細(xì)的定義,只要引入即可。3.1.17 OracleEnterprise StageStage類(lèi)型:Database Stage功能說(shuō)明:從Oracle數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)或者寫(xiě)數(shù)據(jù)到Oracle數(shù)據(jù)庫(kù)中。通常完成的操作:l 使用INSERT或UPDATE命令更新數(shù)據(jù)庫(kù)表l 裝入數(shù)據(jù)

27、庫(kù)表l 讀取數(shù)據(jù)庫(kù)表l 從數(shù)據(jù)庫(kù)表中刪除行l(wèi) 在庫(kù)表中直接執(zhí)行查詢操作l 將庫(kù)表裝入內(nèi)存,然后執(zhí)行查詢操作具體用法:l Inputs Page向數(shù)據(jù)庫(kù)中寫(xiě)數(shù)據(jù),關(guān)鍵是對(duì)Properties的配置l Outputs Page:與Inputs Page類(lèi)似,只是完成的是從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)。3.1.18 Aggregator StageStage類(lèi)型:Processing Stage功能說(shuō)明:將輸入的數(shù)據(jù)分組,計(jì)算各組數(shù)據(jù)的總和或者按組進(jìn)行其他的操作,最后將結(jié)果數(shù)據(jù)輸出到其他的stage。具體用法:l Stage Page:描述stage的一般信息以及字段的分組信息和選擇分組計(jì)算函數(shù)l Inputs

28、 Page:詳細(xì)描述輸入數(shù)據(jù)信息,一般直接反映輸入數(shù)據(jù)字段信息l Oupputs Page:詳細(xì)描述輸出數(shù)據(jù)信息,即經(jīng)過(guò)分組計(jì)算后的數(shù)據(jù)字段信息3.1.19 Remove Duplicates StageStage類(lèi)型:Processing Stage功能說(shuō)明:輸入根據(jù)關(guān)鍵字分好類(lèi)的有序數(shù)據(jù),去除所有記錄中關(guān)鍵字重復(fù)的記錄,通常與sort stage配合使用具體用法:l Stage Page:Properties中的key值與之前sort stage的分類(lèi)key值相同l Inputs Page:對(duì)輸入數(shù)據(jù)字段的描述l Oupputs Page:對(duì)輸出數(shù)據(jù)字段的描述3.1.20 Compress

29、 StageStage類(lèi)型:Processing Stage功能說(shuō)明:將data set文件壓縮成二進(jìn)制文件(與expend datastage相對(duì)應(yīng))具體用法:l Stage Page運(yùn)行結(jié)果l Inputs Page:對(duì)輸入數(shù)據(jù)字段的描述l Oupputs Page:對(duì)輸出數(shù)據(jù)字段的描述3.1.21 Expand StageStage類(lèi)型:Processing Stage功能說(shuō)明:將壓縮的二進(jìn)制文件解壓縮(解壓縮compress stage生成的壓縮文件)具體用法:l Stage Page運(yùn)行結(jié)果:l Inputs Page:對(duì)輸入數(shù)據(jù)字段的描述l Oupputs Page:對(duì)輸出數(shù)據(jù)字段

30、的描述3.1.22 DifferenceStageStage類(lèi)型:Processing Stage功能說(shuō)明:按字段比較兩個(gè)文件,找出不同的記錄。(兩個(gè)文件before和after,以before為準(zhǔn),與after文件中的記錄進(jìn)行比較,找出before在after文件中沒(méi)有或者有的記錄)具體用法:l Stage Page比較策略說(shuō)明Drop Output For CopyFalse:保留before及afte link中key值相同的行True:刪除before及afte link中key值相同的行Drop Output For DeleteFalse:保留before link中有但是afte

31、 link中沒(méi)有的key值所在的行True:刪除before link中有但是afte link中沒(méi)有的key值所在的行Drop Output For EditFalse:保留key值相同,value不同的行True:刪除key值相同,value不同的行Drop Output For InsertFalse:保留before link中沒(méi)有但afte link中有的key值所在的行True:刪除before link中沒(méi)有但afte link中有的key值所在的行調(diào)整before和after的順序:l Inputs Page:對(duì)輸入數(shù)據(jù)字段的描述l Oupputs Page:對(duì)輸出數(shù)據(jù)字段的描

32、述3.1.23 CompareStageStage類(lèi)型:Processing Stage功能說(shuō)明:按字段對(duì)比兩個(gè)已經(jīng)分類(lèi)的有序的文件具體用法:l Stage Pagel Inputs Page:對(duì)輸入數(shù)據(jù)字段的描述l Oupputs Page:對(duì)輸出數(shù)據(jù)字段的描述3.1.24 SwitchStageStage類(lèi)型:Processing Stage功能說(shuō)明:將文件按照一定的條件(一般為字段的值)分割成多個(gè)子文件。具體是將輸入的每一條記錄按照各自符合的條件(關(guān)鍵字的值)分配到不同的輸出(Switch Stage 有一個(gè)input link 和多個(gè)output link,一個(gè) reject link

33、,output link最多可達(dá)128個(gè);此功能很類(lèi)似與C函數(shù)中的switch函數(shù))。具體用法:l Stage Page定義分配記錄的關(guān)鍵字及其值l Inputs Page:對(duì)輸入數(shù)據(jù)字段的描述l Oupputs Page:對(duì)輸出數(shù)據(jù)字段的描述,通過(guò)Mapping自定義各個(gè)輸出文件中的字段3.1.25 Column ImportStageStage類(lèi)型:Restructure Stage功能說(shuō)明:將一個(gè)字段中的數(shù)據(jù)輸出到多個(gè)字段中。(也可以用這個(gè)stage完成分割單個(gè)字段數(shù)據(jù)到多個(gè)字段的目的,此時(shí),輸入數(shù)據(jù)應(yīng)為定長(zhǎng)或者有可以被識(shí)別的可分割的界限,必須是String或者Binary類(lèi)型的,輸出數(shù)

34、據(jù)可以是任何數(shù)據(jù)類(lèi)型)具體用法:l Stage Page:關(guān)鍵是對(duì)Properties的配置l Inputs Page:對(duì)輸入數(shù)據(jù)字段的描述l Oupputs Page:對(duì)輸出數(shù)據(jù)字段的描述,在Column自定義輸出字段l 經(jīng)過(guò)stage的前后數(shù)據(jù)的對(duì)比字段分割后:3.1.26 Column ExportStageStage類(lèi)型:Restructure Stage功能說(shuō)明:與Column ImportStage相反,將多個(gè)類(lèi)型不同的字段合并成一個(gè)string或者binary類(lèi)型的字段。具體用法:l Stage Page:關(guān)鍵是properties的配置,選擇將哪些字段合并,合并后的新字段在Ou

35、tput下的column中直接定義。l Inputs Page:對(duì)輸入數(shù)據(jù)字段的描述,這里關(guān)鍵是Format的配置,決定合并后的字段的格式l Oupputs Page:對(duì)最終合并后的輸出數(shù)據(jù)字段的描述l 經(jīng)過(guò)stage的前后數(shù)據(jù)的對(duì)比合并字段后:3.1.27 Teradata Enterprise StageStage類(lèi)型:Database Stage功能說(shuō)明:從Teradata數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)或者寫(xiě)數(shù)據(jù)到Teradata數(shù)據(jù)庫(kù)中。通常完成的操作:l 使用INSERT或UPDATE命令更新數(shù)據(jù)庫(kù)表l 裝入數(shù)據(jù)庫(kù)表l 讀取數(shù)據(jù)庫(kù)表l 從數(shù)據(jù)庫(kù)表中刪除行l(wèi) 在庫(kù)表中直接執(zhí)行查詢操作l 將庫(kù)表裝入內(nèi)

36、存,然后執(zhí)行查詢操作具體用法:l Inputs Page向數(shù)據(jù)庫(kù)中寫(xiě)數(shù)據(jù),關(guān)鍵是對(duì)Properties的配置l Outputs Page:與Inputs Page類(lèi)似,只是完成的是從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)。l 配置要點(diǎn)3.2 常用數(shù)據(jù)庫(kù)的連接3.2.1 Informix數(shù)據(jù)庫(kù)連接1. 數(shù)據(jù)庫(kù)連接準(zhǔn)備l 首先需要在用戶的環(huán)境變量中設(shè)置有關(guān)Informix數(shù)據(jù)庫(kù)的參數(shù),如PATH中加入Informix的bin目錄,還有INFORMIXDIR,INFORMIXSERVER,CONFIGFILE等,確保該用戶能夠訪問(wèn)Informix。l 然后確認(rèn)Informix數(shù)據(jù)庫(kù)服務(wù)是否已經(jīng)啟動(dòng),通過(guò)運(yùn)行命令:“ons

37、tat ”,如果顯示是:Informix Dynamic Server Version 9.30.FC5 - On-Line - Up 6 days 00:16:12 - 377504 Kbytes,則代表數(shù)據(jù)庫(kù)服務(wù)已經(jīng)啟動(dòng)。l 由于基于Informix的幾個(gè)Stage:Informix CLI、Informix Enterprise、Informix Load,都需要通過(guò)Informix Client來(lái)連接數(shù)據(jù)庫(kù)。l 在$DSHOME/dsenv中加入幾個(gè)有關(guān)Informix數(shù)據(jù)庫(kù)的變量有:u INFORMIXDIR=/home/inf930FC5; export INFORMIXDIRu

38、PATH=$PATH:$INFORMIXDIR/bin; export PATHu INFORMIXSERVER=udi_etl_kf_tcp;export INFORMIXSERVERu ONCONFIG=onconfig.udi_etl_kf; export ONCONFIGu INFORMIXSQLHOSTS=$INFORMIXDIR/etc/sqlhosts; export INFORMIXSQLHOSTSu LIBPATH=cat /.dshome/lib:$LIBPATH:$APT_ORCHHOME/lib:$INFORMIXDIR/lib:dirname $DSHOME/bran

39、ded_odbc/lib:$DSHOME/lib:$DSHOME/uvdllsu :$DSHOME/java/jre/bin/classic:$DSHOME/java/jre/bin:$INFORMIXDIR/lib:$INFORMIXDIR/lib/cli:$INFORMIXDIR/lib/esql; export LIBPATHu LANG=C; export LANGu INFORMIXC=CC; export INFORMIXCu THREADLIB=POSIX; export THREADLIBl 運(yùn)行dsenv后,通過(guò)env查看設(shè)置的變量是否已經(jīng)生效。3.2.2 Oracle數(shù)據(jù)庫(kù)

40、連接1. 在用戶的.profile中設(shè)置環(huán)境變量l ORACLE_HOME=/home/oracle/OraHome1;export ORACLE_HOMEl APT_ORCHHOME=/app/dsadm/Ascential/DataStage/PXEngine;l export APT_ORCHHOMEl PATH=$PATH:/app/dsadm/Ascential/DataStage/DSEngine/bin:$APT_ORCHHOME/bin :$ORACLE_HOME/bin;export PATHl NLS_LANG=American_America.ZHS16GBK; expo

41、rt NLS_LANG注:目錄根據(jù)安裝路徑不同,需做相應(yīng)調(diào)整。2. 執(zhí)行動(dòng)態(tài)庫(kù)連接腳本/app/dsadm/Ascential/DataStage/PXEngine/install/install.liborchoracle出現(xiàn)如下結(jié)果:3. 從DataStage Administrator客戶端中打開(kāi)工程屬性點(diǎn)擊Environment,進(jìn)入下面頁(yè)面在LIBPATH部分增加路徑/oracle/OraHome1/lib32($ORACLE_HOME/lib32)注意:linux下是($ORACLE_HOME/lib)需要根據(jù)實(shí)際情況設(shè)定,Liux下LIBPATH名字是LD_LIBRARY_PAT

42、H4. 設(shè)置字符集對(duì)照修改/app/dsadm/Ascential/DataStage/PXEngine/etc/oracle_cs.txt,增加新內(nèi)容ASCL_GB2312 UTF8(根據(jù)Oracle數(shù)據(jù)庫(kù)實(shí)際使用字符集調(diào)整)5. 在服務(wù)器端重啟服務(wù)uv admin stopuv admin start4. 高級(jí)應(yīng)用4.1 DataStage BASIC接口該功能主要應(yīng)用于Job屬性定義中的Job control中,該功能可用于在本Job中調(diào)用其它的Job,給Job賦參數(shù)、得到Job執(zhí)行狀態(tài)等。4.2 自定義Stage Type為了擴(kuò)大并行Stage type的應(yīng)用范圍,DataStage允

43、許開(kāi)發(fā)者定義自己的Stage type,并將其應(yīng)用于Parallel Job中。目前有三種形式的Stage可以自己定義。4.2.1 Wrapped Stage適用于對(duì)應(yīng)用本身不做處理。而且對(duì)系統(tǒng)的性能要求不高。4.2.2 Build Stage希望自己編碼,但不需要?jiǎng)討B(tài)的變化輸入和輸出參數(shù)。4.2.3 Custom Stage針對(duì)熟悉Orchestrate的資深開(kāi)發(fā)者,通過(guò)指定一個(gè)Orchestrate Operator來(lái)作為一個(gè)新的Stage type。使其能夠在Parallel Job中得到使用。4.3 性能調(diào)優(yōu)對(duì)于大數(shù)據(jù)量的處理,DataStage的運(yùn)行效率是一個(gè)十分重要的環(huán)節(jié)。4.3.

44、1 優(yōu)化策略. 提高讀寫(xiě)效率在處理大數(shù)據(jù)量的情況下,文件的讀寫(xiě)速度往往對(duì)整個(gè)Job的處理時(shí)間,有很大的影響。所以,提高讀寫(xiě)效率是Job優(yōu)化的最基本也是最關(guān)鍵的一環(huán)。由于主要是測(cè)試Job的讀寫(xiě)效率,所以我們的測(cè)試案例就是讀一個(gè)數(shù)據(jù)文件,然后取其中的部分字段寫(xiě)到文件中去。優(yōu)化方案優(yōu)化前優(yōu)化后效率提升(變化量/優(yōu)化前)Unix外部命令30918條/秒調(diào)整數(shù)據(jù)分部(I/O通道)30918條/秒通過(guò)組件過(guò)濾字段30918條/秒88206條/秒185%用RowEdit過(guò)濾字段30918條/秒96742條/秒213%用Complexfile讀入30918條/秒149950條/秒385%增加讀如

45、readers14488條/秒30918條/秒113%改變?cè)磾?shù)據(jù)格式(定長(zhǎng)帶分隔符-定長(zhǎng)不帶分隔符) 40000條/秒46875條/秒17%1. 引入unix外部命令(有效度:)為了提高讀取的速度,我們需要盡量避免讀入多余的字段,我們選擇了在Sequential Stage中加入了Filter選項(xiàng),用unix shell的cut命令指定只讀所需的字段。這樣會(huì)明顯提高讀入的速度,但數(shù)據(jù)量增大后(估計(jì)300MB以上),cut的處理速度將會(huì)明顯下降,不能起到提高讀取的目的。所以我們沒(méi)有進(jìn)行大數(shù)據(jù)量的Cut測(cè)試。2. 調(diào)整數(shù)據(jù)在磁盤(pán)上的分布(有效度:)由于數(shù)據(jù)的讀寫(xiě)對(duì)磁盤(pán)的I/O依賴比較強(qiáng),我們盡量將

46、不同的數(shù)據(jù)分配到不同的文件系統(tǒng),這些文件系統(tǒng)被mount到不同的磁盤(pán)上,如增量文件、全量文件、Scratch目錄、Datasets目錄,以及目標(biāo)文件的存放。對(duì)于同樣的數(shù)據(jù)存放到了一組磁盤(pán)上面,我們也盡量讓這些數(shù)據(jù)是以分散的跨盤(pán)存儲(chǔ)的方式讀取。結(jié)果證明,數(shù)據(jù)的讀取效果將有比較明顯的改善。大概是在一個(gè)磁盤(pán)上讀取的23倍。由于I/O通道的多少和在磁盤(pán)上的分布,需要有系統(tǒng)管理員的支持,我們沒(méi)有提供有關(guān)這種優(yōu)化的測(cè)試結(jié)果數(shù)據(jù)。3. 通過(guò)組件過(guò)濾多余字段(有效度:)由于引入了unix shell命令以后,對(duì)于較大數(shù)據(jù)量的讀取不能有較好的效果。所以,我們采取將數(shù)據(jù)先用Sequential File Stag

47、e讀入,然后再通過(guò)Copy Stage對(duì)不要處理的字段進(jìn)行過(guò)濾,然后再做下一步處理。這種優(yōu)化雖然增加了一個(gè)組件,但Copy Stage的速度是很快的,所以讀取的速度比過(guò)濾字段要快。4. 通過(guò)drop on input過(guò)濾多余字段(有效度:)在增加了一個(gè)Copy Stage的基礎(chǔ)上,對(duì)于讀入文件sequential file中不需要抽取的字段做如下設(shè)置:edit row - filed level - drop on input。這樣將只讀入需要抽取的字段。5. 引入Complex File Stage讀入數(shù)據(jù)(有效度:)由于Complex File Stage能夠并行讀取數(shù)據(jù),而且能夠選擇性的

48、讀入指定的字段,所以是我們一直希望引入的一個(gè)讀入數(shù)據(jù)的組件,但由于該組件的配置比較復(fù)雜,而且對(duì)源數(shù)據(jù)的格式有一定的要求。而且其中有些功能我們目前還沒(méi)有找到一些有效的方法解決。但我們?cè)跍y(cè)試用該組件讀取數(shù)據(jù)時(shí),文件的讀入速度有了大幅的提升?;旧峡梢赃_(dá)到正常的Sequential File Stage讀取數(shù)據(jù)的45倍。如果其配置問(wèn)題能夠得到解決,那么這將是我們今后可以重點(diǎn)考慮的讀入數(shù)據(jù)的組件。6. 在讀入文件是采用多readers(有效度:)無(wú)論是用Sequential File Stage還是用Comples File Stage,都有一個(gè)可調(diào)的選項(xiàng):Number of Readers Per

49、Node,其缺省值為1,它的功能是在每一個(gè)Node上,開(kāi)N個(gè)讀取數(shù)據(jù)的Instances。適當(dāng)調(diào)整這個(gè)參數(shù),提高讀取數(shù)據(jù)的并行度,可以明顯提高讀取的效率。通常,對(duì)于每一個(gè)結(jié)點(diǎn),將該選項(xiàng)的值設(shè)置為812個(gè)為宜,如果同時(shí)有幾個(gè)文件同時(shí)讀入,則希望總計(jì)不要超過(guò)12個(gè),這可以依據(jù)實(shí)際的情況進(jìn)行調(diào)試。但該參數(shù)好像也要求數(shù)據(jù)文件是定長(zhǎng)的。. 提高運(yùn)行效率加快Job除了數(shù)據(jù)的輸入輸出以外的邏輯的處理速度,靈活應(yīng)用不同的Stage,或者走不同的處理流程,對(duì)整個(gè)Job的處理速度的提升,也會(huì)有比較顯著的效果。本次測(cè)試的案例為將SAACNACN檔與VIP客戶清單檔做Lookup,找出其中屬于VIP客戶

50、的賬戶信息。最終測(cè)試的效率變化結(jié)果如下:優(yōu)化方案優(yōu)化前(秒)優(yōu)化后(秒)效率提升(優(yōu)化前/優(yōu)化后)改用Join方式159119134%用LookUp File Set15957279%將字段合并5724237%1. 對(duì)于數(shù)據(jù)較大的參數(shù)表,改用Join Stage方式(有效度:)我們通常會(huì)用Lookup Stage做有關(guān)數(shù)據(jù)的匹配查找工作。對(duì)于Lookup的Reference Link,由于其是將數(shù)據(jù)放到內(nèi)存中,所以當(dāng)其數(shù)據(jù)量較大的時(shí)候(超過(guò)了內(nèi)存的大小),我們決定用Join Stage的內(nèi)連接來(lái)實(shí)現(xiàn)相同的功能。由于我們的源數(shù)據(jù)是排序過(guò)的,所以會(huì)減少Join Stage的處理時(shí)間。2. 用Loo

51、kUp File Set 代替 Sequential file(有效度:)我們通常用Sequential File Stage來(lái)作為L(zhǎng)ookup Stage的reference link的輸入,在數(shù)據(jù)量很小的情況下,好像這種方式不會(huì)影響效率。但如果數(shù)據(jù)量比較大,接近了內(nèi)存的大小,那么DataStage會(huì)推薦使用Lookup file set作為L(zhǎng)ookup reference的輸入。雖然生成Lookup file set需要單獨(dú)的Job生成,但這對(duì)于Lookup效率的提升,還是很值得的。在多個(gè)Job需要使用相同的Lookup file set的情況下,這種方式應(yīng)該會(huì)更加有效。3. 將字段合并處

52、理(有效度:)我們會(huì)在數(shù)據(jù)讀入的時(shí)候,過(guò)濾掉沒(méi)有用的字段。而對(duì)于某些字段,在輸出的結(jié)果中需要包含,但它們?cè)谔幚淼娜讨?,不?huì)參加運(yùn)算等單獨(dú)的處理。我們考慮將這些連續(xù)的字段進(jìn)行合并處理。這樣可以減少數(shù)據(jù)的轉(zhuǎn)換量。讓工具只需要處理較少的需要轉(zhuǎn)換的數(shù)據(jù),對(duì)于有很多這種字段連續(xù)在一起的情況下,這種處理方式也有很好的效果。. 加強(qiáng)并行處理1. 用Cluster方式運(yùn)行(有效度:)在進(jìn)行大數(shù)據(jù)量,多個(gè)Job的并行處理時(shí),這將是一個(gè)最有效的解決方法。2. 同時(shí)讀取處理多個(gè)文件以通配符的方式讀取多個(gè)文件。由于測(cè)試要求對(duì)于輸出的文件,需要每個(gè)分行一個(gè)單獨(dú)的文件,所以我們沒(méi)有對(duì)這種方式進(jìn)行深度的測(cè)試

53、。3. 在一個(gè)Job中包含幾個(gè)相同流程這種處理方式就是將Job的內(nèi)容進(jìn)行拷貝,放在同一個(gè)Job之中。運(yùn)行這個(gè)Job的時(shí)候會(huì)同時(shí)運(yùn)行有不同輸入的幾個(gè)流程。但這種方式好像效果并不如幾個(gè)Job單獨(dú)運(yùn)行有效。4. 幾個(gè)Job并行調(diào)用將處理邏輯完全一樣的幾個(gè)Job同時(shí)運(yùn)行,這是目前我們最終決定采用的并行調(diào)度方式。但每次并行的個(gè)數(shù),還需要依據(jù)不同的Job,做不同的分析。因?yàn)槿绻淮芜\(yùn)行的Job過(guò)多,由于系統(tǒng)的資源有限,會(huì)造成并行處理的時(shí)間要遠(yuǎn)遠(yuǎn)大于同樣數(shù)量的Job串行處理的時(shí)間。而且如果某個(gè)Job在一定的時(shí)間以內(nèi),沒(méi)有等待到資源,那么它會(huì)因?yàn)槌瑫r(shí)而被abort掉。造成運(yùn)行的Job不能全部成功的完成。每個(gè)J

54、ob運(yùn)行起來(lái)以后,工具會(huì)在系統(tǒng)啟動(dòng)很多進(jìn)程,我們分析,是否可以通過(guò)分析process的總量來(lái)確定不同Job所需要啟動(dòng)的最大數(shù)。但這在不同的硬件環(huán)境下,會(huì)有不同的結(jié)果。由于時(shí)間有限,我們還沒(méi)有能夠?qū)γ總€(gè)Job的最大并行數(shù)進(jìn)行測(cè)試。5. 對(duì)并行的Job分配N(xiāo)ode map為了避免出現(xiàn)有關(guān)幾個(gè)job同時(shí)并行而造成進(jìn)程等待超時(shí),我們將每個(gè)Job都固定在幾個(gè)Node上運(yùn)行,如對(duì)于8個(gè)node的configure file,我們將兩個(gè)并行的Job,在其中的Stage的Node map中,第一個(gè)Job用1、2、3、4個(gè)node,第二個(gè)Job用剩下的Node,這樣做的效果會(huì)好很多,而且由于生成的進(jìn)程少,也不容

55、易出現(xiàn)Abort掉的結(jié)果。. 其它未進(jìn)行的優(yōu)化策略1. 調(diào)整Partition方式我們?cè)?jīng)嘗試對(duì)某些Stage的Partition方式進(jìn)行手工設(shè)置,但好像效果并不明顯,選擇Auto方式,讓工具依據(jù)前面的Stage運(yùn)行的Partition和本Stage的類(lèi)型進(jìn)行自動(dòng)設(shè)定。這樣效果還要相對(duì)好一些。不過(guò)對(duì)于某些特殊的,或者依據(jù)不同環(huán)境進(jìn)行可以有不同選擇的Stage,也可以通過(guò)手工設(shè)定Partition方式來(lái)提高運(yùn)行的效率。2. 引入DataSets由于本次的測(cè)試案例都是相對(duì)獨(dú)立的,沒(méi)有必然的聯(lián)系,所以本次沒(méi)有采用DataSets存放中間結(jié)果。3. 調(diào)整輸入文件格式我們?cè)趩雾?xiàng)測(cè)試時(shí),曾經(jīng)對(duì)文件的格式對(duì)效率的影響進(jìn)行了測(cè)試,發(fā)現(xiàn)變長(zhǎng)帶分隔符和定長(zhǎng)不帶分隔符的文件,在讀取效率上最高。但我們本次的數(shù)據(jù)為定長(zhǎng)帶分隔符。4. 調(diào)整環(huán)境變量工具本身有許多的環(huán)境變量,可以調(diào)整工具運(yùn)行的效率,但由于變量數(shù)目眾多,而且時(shí)間有限,我們只對(duì)其中很少一部分進(jìn)行了測(cè)試。5. 使用RCP由于使用RCP(Runtime Column Propagation)可以減少一些數(shù)據(jù)的轉(zhuǎn)換,但同時(shí)它可能會(huì)影響一些Stage運(yùn)行的準(zhǔn)確性。所以我們?cè)谶@次測(cè)試中關(guān)閉了RCP功能。6. 針對(duì)Transformer如果在Tr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論