摘要:目前我國物流業保留較快增長,但還是存在一些問題:物流成本高、效率低,條塊分割嚴重(自營物流、級別小、技術落後、標準不統一)、基礎設施相對滯後(物流基礎設施之間不銜接、不配套),對訂單建立到使用者簽收整套完整流程缺乏完善的監控和通知手段.
免費開通巨量資料服務:https://www.aliyun.com/product/odps
基於建設統一物流平臺的基本要求,用戶希望打通各大系統,能夠追蹤所有訂單在物流系統中的流轉程序、處理狀態等資訊,具體如下需求:
1:訂單分為5個階段,訂單處理、發運處理、揀貨出庫、配送和簽收
2:每個階段的狀態決策:未處理、一般報警、嚴重報警、完成
3:超期天數:需要決策基於訂單、裝運單的超期天數
4:進度:本期階段的進度百分比

由上圖我們能夠剖析得出此需求可能涉及多個系統的資料整合,其中訂單來源於ERP系統,發運處理和揀貨出庫資料來源SAP系統,而配送簽收就需要使用到GPS等外部系統資料。實際場景中訂單、交貨單、運單分別來自不同的資料庫,所以整體工作項目包括:
1、首先要進行資料的整合上雲
2、利用阿裡雲巨量資料計算服務進行資料處理和通知決策產生通知結果
3、將通知結果同步到本地通知資料庫中
4、本地搭建訂單通知套用使用通知資料庫進行視覺效果閱聽


技術架構

主要處理流程:

開發環境:windows7、Python、Data IDE
工具:DataX、Data IDE、Eclipse
【本文】
一、資料同步上雲
安裝Python環境>下載datax用戶端>建立項目>建立表>編寫json設定檔>同步資料到odps
Python位址:https://www.python.org/downloads/
Datax位址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz"
1、基於阿裡雲巨量資料平臺建立資料同步表
1.1.首先您需要阿裡雲帳號並已開通巨量資料計算服務,如果您已開通巨量資料計算服務,則直接進入主控台點選“巨量資料開發套件”進入Data IDE環境。
1.2.點選管理主控台,進入管理主控台網頁,點選建立項目,新建MaxCompter項目

1.3.點選進入工作區,進入到odps工作空間,工具列點選【新建】,選擇新建表

對應本機資料訂單抬頭表,將需要進行資料處理的欄位提出來,新建表sql如下

注:登入阿裡雲市場點選【我的圖片】點選【管理主控台】下的【巨量資料開發套件】,進入專案管理找到自己新建的專案點選【進入工作區】,在IDE工作環境中標題列中選擇【資料管理】。在左邊標題列下點選【資料工作表管理】,負載出資料管理網頁。找到我【管理的表】,點選查看

以上就完成了Maxcompute建立專案和建表的工作內容。
2、設定DataX資料同步設定檔
首先需要下載的datax(datax 是不同類型的資料庫中間交換資料的工具)


以上設定:MysqlReader通過JDBC連接器串連到遠端Mysql資料庫,並根據使用者設定的資訊生成查詢SELECTSQL語句,然後傳送到遠端Mysql資料庫,並將該SQL執行返回結果使用DataX自訂的資料類型拼裝為抽象的資料集,並傳遞給下游Writer處理。odpsWriter通過DataX架構追蹤Reader生成的合約資料,根據你設定的writeMode生成。
打開cmd.exe命令列視窗輸入datax檔案位址我的是:D:programFilesfile2dataxin
執行指令datax.py..job _oc_hostorderline.json.

執行成功

注:datax在window下亂碼異常解決方式:
打開cmd.exe命令列視窗,通過chcp指令改變字碼頁為65001
chcp65001
在指令列名欄上點選右鍵,選擇“屬性”->“字型”,將字型修改為True Type字型“Lucida Console”,然後點選確定將屬性套用到本期視窗
3、查看雲上表資料
登入阿裡雲市場點選【我的圖片】點選【管理主控台】下的【巨量資料開發套件】,進入專案管理,找到自己新建的專案點選【進入工作區】,在IDE工作環境中標題列中選擇【資料管理】。在左邊標題列下點選【資料工作表管理】,負載出資料管理網頁。找到我【管理的表】,點選查看

按兩下【t_oc_hostorderline】進入表的詳情網頁在表的詳情網頁點選【資料預覽】。下面出現本機資料,說明資料本地同步到odps成功

二、資料處理、通知決策、結果集輸出
我們使用阿裡雲Data IDE流程元件中的ODPS_SQL節點來進行資料處理(包括資料集合並、單位統一、資料空值補全等),然後基於阿裡雲標準開發自訂的MR來進行通知決策,最後將通知結果寫入到結果表中,具體動作步驟如下:
1.建立任務
登入阿裡雲市場點選【我的圖片】點選【管理主控台】下的【巨量資料開發套件】,進入專案管理找到自己新建的項目點選【進入工作區】,在工具列點選【新建】,選擇新建
選擇工作流程工作,週期調度

2.追蹤訂單資訊,交貨單資訊,運單資訊,根據訂單號組裝成通知決策所需要的訂單通知物件,根據訂單號分組組裝成完整的通知資料物件 
3.選擇節點群組件的虛節拖拽串連完整的處理流程

ODPS_SQL節點,以SQL語句來進行多表資料的合併、空資料補全、單位統一等處理
OPEN MR節點,使用JAVA語言開發的自訂通知MapReduce程式(封裝為jar上傳到平臺使用)


以上流程開發完畢後即可點選"測試"按鈕,測試回合整個流程任務,也可設定任務為週期任務設定任務定時啟動的時間,這樣任務就可以按照設定週期性的定時執行。
以上流程中,在ODPSSQL進行資料處理之後,結果作為MapReduce輸入表,以訂單號作為key,訂單通知物件作為value,分發給不同的Reduce進行規制決策,將滿足通知有條件的結果寫入MaxCompute結果表【orderalarm_result】中

三、計算結果同步到本地
通過以上流程任務的執行,已經產生了我們需要的通知結果資料,但用戶不希望將通知結果資料放在雲端使用,用戶想將結果資料能夠放在本地MySQL或其它資料庫中,基於本地搭建通知套用使用本機資料庫中的資料進行視覺效果閱聽。
基於以上用戶需求,我們只雲端式平臺產生了通知結果資料,接下來我們還需要將雲端的資料同步到本地。
(我們使用DataX工具設定job任務將巨量資料平臺結果表中的資料同步到本地通知平臺資料庫的通知結果表中)
1、新建設定檔
t_oc_hostorderline2.json,job檔案內容如下

打開cmd.exe命令列視窗輸入datax檔案位址我的是:D:programFilesfile2dataxin
執行指令datax.py..job esult.json.

3、查看本機資料庫

四、視覺效果閱聽
將雲上通知結果資料同步到本機資料庫以後,用戶即可基於本地環境搭建通知套用,使用本機資料庫中的資料來進行視覺效果閱聽。
1、建立ssm專案新增訂單通知

2、展示網頁

以上基於阿裡雲MaxCompute平臺通過:資料上雲、巨量資料計算、雲上資料同步到本地、本地視覺效果閱聽四大步來講解如何?物流訂單的通知與追蹤。
其主要用到的工具包括:DataX(資料同步/整合工具)、Data IDE(巨量資料開發套件)、Eclips(Java、MapReduce開發)。
相關產品:
1.巨量資料計算服務(MaxCompute)