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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、DataStage Enterprise Edition開發(fā)指南v2.0目 錄目錄I1. 引言11.1 編寫目的11.2 幫助使用12. 產(chǎn)品概述23. 常規(guī)應用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ù)庫的連接443.2.1 Informix數(shù)據(jù)庫連接443.2.2 Oracle數(shù)據(jù)庫連接454. 高級應用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 關鍵問題分析52 并行度53 處理建議53 其它54 機器的對稱性54 并行調(diào)度測試說明:555. 開發(fā)經(jīng)驗技巧匯總55 問題551. 引言1.1 編寫目的IBM DataStage作ODS項目所使用的主要開發(fā)工具,在項目中得到了比較充分的應用,對IMB DataStage產(chǎn)品方方面面的功能,都有所涉及。作為對我們使用本產(chǎn)品的一個技術沉淀,我們編寫了這個總結性質(zhì)的手冊,旨在綜合描述該產(chǎn)品的安裝、常規(guī)應用、高級開發(fā)等等項目所涉及到的各個方面。為項目組內(nèi)部或其他使用該產(chǎn)品的項目組提供一個全面而綜合的產(chǎn)品操作指導,幫助使用者能夠在最短的時間內(nèi)了解該產(chǎn)品,并

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

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

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

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

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

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

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

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

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

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

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

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

17、mer Stage功能強大,但在運行過程中是以犧牲速度為代價的。在只有簡單的變換,拷貝等操作時,最好用Modify Stage,Copy Stage,F(xiàn)ilter Stage等來替換Transformer Stage。示例Derivation轉(zhuǎn)換表達式: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功能說明:只能有一個輸入及一個輸出,按照指定的Key值進行排列。可以選擇升序還是降序,是否去除重復的數(shù)據(jù)等等

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

37、tat ”,如果顯示是:Informix Dynamic Server Version 9.30.FC5 - On-Line - Up 6 days 00:16:12 - 377504 Kbytes,則代表數(shù)據(jù)庫服務已經(jīng)啟動。l 由于基于Informix的幾個Stage:Informix CLI、Informix Enterprise、Informix Load,都需要通過Informix Client來連接數(shù)據(jù)庫。l 在$DSHOME/dsenv中加入幾個有關Informix數(shù)據(jù)庫的變量有: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 運行dsenv后,通過env查看設置的變量是否已經(jīng)生效。3.2.2 Oracle數(shù)據(jù)庫

40、連接1. 在用戶的.profile中設置環(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ù)安裝路徑不同,需做相應調(diào)整。2. 執(zhí)行動態(tài)庫連接腳本/app/dsadm/Ascential/DataStage/PXEngine/install/install.liborchoracle出現(xiàn)如下結果:3. 從DataStage Administrator客戶端中打開工程屬性點擊Environment,進入下面頁面在LIBPATH部分增加路徑/oracle/OraHome1/lib32($ORACLE_HOME/lib32)注意:linux下是($ORACLE_HOME/lib)需要根據(jù)實際情況設定,Liux下LIBPATH名字是LD_LIBRARY_PAT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論