DataStage 作業通常用於按批次處理資料,它們計畫按特定的間隔運行。 在沒有具體的計畫要遵循時,DataStage 操作員可通過 DataStage 和 QualityStage Director 用戶端或在命令列手動啟動作業。 如果在命令列運行作業,那麼您可以按如下方式執行它。
dsjob -run -HTTP://www.aliyun.com/zixun/aggregation/12616.html">param input_file=/path/to/in_file -param output_ file=/path/to/out_file dstage1 job1
圖 1 給出了一個表示此命令的圖表。
圖 1. 調用 DataStage 作業
在正常環境中,in_file 和 out_file 存儲在運行 DataStage 的機器上的某個檔案系統中。 但在 Linux 或 UNIX 中,輸入和輸出可傳送到一系列命令中。 例如,當需要對程式進行排序時,可執行命令 command|sort |uniq > /path/to/out_file。 在這種情況下,圖 2 顯式了資料流程,其中一個命令的輸出變成下一個命令的輸入,最終的輸出位於檔案系統中。
圖 2. UNIX 典型管道用法
假設中間流程生成了幾百萬行代碼,您可避免獲取中間檔,從而節省檔案系統中的空間以及寫入這些檔的時間。 與 UNIX 中執行的許多程式或命令不同,DataStage 作業不會通過管道獲取標準輸入。 本文將介紹一種方法,展示如何使用腳本完成此任務,以及它的實際用法。
如果作業應接受標準輸入並生成標準輸出,就像常規 UNIX 命令一樣,那麼必須通過一個包裝器腳本按以下方式調用它:command1|piped_ds_job.sh|command2 > /path/to/out_file。
或者可能您必須將輸出發送到某個檔,比如使用命令 command1|piped_ds_job.sh > /path/to/out_file。
圖 3 中的圖表展示了應如何架構該腳本。
圖 3. 一個 DataStage 作業的包裝器腳本
該腳本必須將標準輸入轉換為指定管道,還必須將 DataStage 作業的輸出檔案轉換為標準輸出。 在下面幾節中,您將學習如何完成此任務。