天天看點

基于大資料開發套件定時排程帶資源檔案的MapReduce作業

在這個基礎上,增加資源檔案的讀取方法,修改reduce類。主要的邏輯是讀取資源檔案,資源檔案裡的資料格式是字元串1,字元串2。代碼邏輯是如果word count裡的word如果有在字元串1裡出現的話,就替換成字元串2。

對于測試資料,源檔案的内容為

我們先用手工排程來跑這個mr,這裡跑通了後後面的所有的配置就很容易明白了。

首先需要把代碼打出的jar包,和這個resource.txt檔案上傳到伺服器上

然後通過指令行來調用

odpscmd用戶端有一個參數,是-e,可以在shell裡直接調用jar指令來跑mr,當然也可以使用odpscmd -f來再調用一個腳本檔案,但是這樣有點麻煩了。這裡就直接用-e來做。

你可以先用

在linux伺服器上運作任務。注意安裝odpscmd配置前需要先配置好java環境。然後後面的crontab的配置就不展開了。

配置dataide的mr作業的界面,很容易就讓人想到mr任務的main方法。其實就是dataide會根據配置自己生成main方法,然後去調用maxcompute上的任務。具體的配置可以參考這個截圖:

基于大資料開發套件定時排程帶資源檔案的MapReduce作業

可以在右邊看到可以配置任務的排程周期和上下遊依賴,進而實作每天的定時排程,而且還能是保證上遊的資料導入、預處理完成後才開始做mr操作,非常好用。

上述的mr任務簡單友善,但是dataide出于安全考慮,不讓使用者自己寫main方法。如果需要用到諸如傳參數之類的功能,可以自己寫shell任務,但是排程讓dataide來做。這樣就集上面兩個方法之長了。

要把裡面的access id/key,project 替換成你自己的,然後開始測試代碼。需要特别注意的是, shell任務是在機器上的admin賬号下運作的 ,如果發現各種奇怪的錯誤,比如明明存在的檔案找不到一類的錯誤,可以先su - admin,調試下shell指令,或者通路下對應的檔案,看看是否是環境變量,檔案目錄權限的問題。另外也可以把錯誤日志重定向到某個檔案裡,比如/tmp檔案夾下的某個臨時日志檔案裡,友善事後調試。大家可以在admin賬号下把shell調試通過後再放到數加上去調用。

另外shell任務可以調整排程的機器,可以參考

基于大資料開發套件定時排程帶資源檔案的MapReduce作業