【物流大數據實踐】基於阿裡雲Maxcompute實現物流跟蹤

来源:http://www.cnblogs.com/libo66/archive/2017/03/15/6552938.html
-Advertisement-
Play Games

摘要: 目前我國物流業保持較快增長,但還是存在一些問題:物流成本高、效率低,條塊分割嚴重(自營物流、規模小、技術落後、標準不統一)、基礎設施相對滯後(物流基礎設施之間不銜接、不配套),對訂單創建到用戶簽收整套完整流程缺乏完善的監控和預警手段. ...


免費開通大數據服務:https://www.aliyun.com/product/odps

摘要:

目前我國物流業保持較快增長,但還是存在一些問題:物流成本高、效率低,條塊分割嚴重(自營物流、規模小、技術落後、標準不統一)、基礎設施相對滯後(物流基礎設施之間不銜接、不配套),對訂單創建到用戶簽收整套完整流程缺乏完善的監控和預警手段.


 

基於建設統一物流平臺的基本要求,用戶希望打通各大系統,能夠跟蹤所有訂單在物流系統中的流轉過程、處理狀態等信息,具體如下需求:

1:訂單分為5個階段,訂單處理、發運處理、揀貨出庫、配送和簽收

2:每個階段的狀態判定:未處理、一般報警、嚴重報警、完成

3:超期天數:需要判定基於訂單、裝運單的超期天數

4:進度:當前階段的進度百分比                        

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

 

由上圖我們能夠分析得出此需求可能涉及多個系統的數據整合,其中訂單來源於ERP系統,發運處理和揀貨出庫數據來源SAP系統,而配送簽收就需要使用到GPS等外部系統數據。實際場景中訂單、交貨單、運單分別來自不同的資料庫,所以整體工作項包括:

1、首先要進行數據的整合上雲  

2、利用阿裡雲大數據計算服務進行數據處理和預警判定產生預警結果

3、將預警結果同步到本地預警資料庫中

4、本地搭建訂單預警應用使用預警資料庫進行可視化展示

 

技術架構

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

主要處理流程:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

 

開發環境: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項目

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

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

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

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

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

註:登錄阿裡雲市場點擊【我的頭像】點擊【管理控制台】下的【大數據開發套件】,進入項目管理找到自己新建的項目點擊【進入工作區】,在IDE工作環境中標題欄中選擇【數據管理】。在左邊標題欄下點擊【數據表管理】,載入出數據管理頁面。找到我【管理的表】,點擊查看                        

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以上就完成了Maxcompute建立項目和建表的工作內容。

 

2、配置DataX數據同步配置文件

  首先需要下載的datax(datax 是不同類型的資料庫中間交換數據的工具)

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=以下是配置job.json 示例

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以上配置:MysqlReader通過JDBC連接器連接到遠程的Mysql資料庫,並根據用戶配置的信息生成查詢SELECT SQL語句,然後發送到遠程Mysql資料庫,並將該SQL執行返回結果使用DataX自定義的數據類型拼裝為抽象的數據集,並傳遞給下游Writer處理。odpsWriter 通過 DataX 框架獲取 Reader 生成的協議數據,根據你配置的 writeMode 生成。

打開cmd.exe命令行視窗  輸入datax文件地址我的是:D:\programFiles\file2\datax\bin
執行命令 datax.py   ..\job\t_oc_hostorderline.json. 

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

執行成功

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

註:datax 在window下亂碼異常解決方式:

打開cmd.exe命令行視窗,通過chcp命令改變代碼頁為65001

chcp 65001
在命令行標題欄上點擊右鍵,選擇“屬性”->“字體”,將字體修改為True Type字體“Lucida Console”,然後點擊確定將屬性應用到當前視窗

 

3、查看雲上表數據

    登錄阿裡雲市場點擊【我的頭像】點擊【管理控制台】下的【大數據開發套件】,進入項目管理,找到自己新建的項目點擊【進入工作區】,在IDE工作環境中標題欄中選擇【數據管理】。在左邊標題欄下點擊【數據表管理】,載入出數據管理頁面。找到我【管理的表】,點擊查看

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

雙擊【t_oc_hostorderline】進入表的詳情頁面在表的詳情頁面點擊【數據預覽】。下麵出現本地數據,說明數據本地同步到odps成功

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

 

二、數據處理、預警判定、結果集輸出

   我們使用阿裡雲Data IDE流程組件中的ODPS_SQL節點來進行數據處理(包括數據集合併、單位統一、數據空值補全等),然後基於阿裡雲標準開發自定義的MR來進行預警判定,最後將預警結果寫入到結果表中,具體操作步驟如下:

 

1.建立任務

登錄阿裡雲市場點擊【我的頭像】點擊【管理控制台】下的【大數據開發套件】,進入項目管理找到自己新建的項目點擊【進入工作區】,在工具欄點擊【新建】,選擇新建

選擇工作流任務,周期調度

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

2.獲取訂單信息,交貨單信息,運單信息,根據訂單號組裝成預警判定所需要的訂單預警對象,根據訂單號分組組裝成完整的預警數據對象640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

3.選擇節點組件的虛節拖拽連接完整的處理流程

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

工作流如下:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

ODPS_SQL節點,以SQL語句來進行多表數據的合併、空數據補全、單位統一等處理

OPEN MR節點,使用JAVA語言開發的自定義預警MapReduce程式(打包為jar上傳到平臺使用)

 

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

    以上流程開發完畢後即可點擊"測試"按鈕,測試運行整個流程任務,也可設置任務為周期任務設置任務定時啟動的時間,這樣任務就可以按照設定周期性的定時執行。

    

    以上流程中,在ODPS SQL進行數據處理之後,結果作為MapReduce輸入表,以訂單號作為key,訂單預警對象作為value,分發給不同的Reduce進行規制判定,將滿足預警條件的結果寫入MaxCompute結果表【orderalarm_result】中

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

 

三、計算結果同步到本地

   通過以上流程任務的運行,已經產生了我們需要的預警結果數據,但用戶不希望將預警結果數據放在雲端使用,用戶想將結果數據能夠放在本地MySQL或其它資料庫中,基於本地搭建預警應用使用本地資料庫中的數據進行可視化展示。

    基於以上用戶需求,我們只基於雲平臺產生了預警結果數據,接下來我們還需要將雲端的數據同步到本地。

  (我們使用DataX工具設置job任務將大數據平臺結果表中的數據同步到本地預警平臺資料庫的預警結果表中)

1、新建配置文件 

 t_oc_hostorderline2.json,job文件內容如下

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

打開cmd.exe命令行視窗  輸入datax文件地址我的是:D:\programFiles\file2\datax\bin
執行命令 datax.py   ..\job\result.json. 

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

執行成功

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

3、查看本地資料庫

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

四、可視化展示

    將雲上預警結果數據同步到本地資料庫以後,用戶即可基於本地環境搭建預警應用,使用本地資料庫中的數據來進行可視化展示。

 

1、建立ssm項目添加訂單預警

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

2、展示頁面

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

 

以上基於阿裡雲MaxCompute平臺通過:數據上雲、大數據計算、雲上數據同步到本地、本地可視化展示  四大步來講解如何實現物流訂單的預警與跟蹤。

 

其主要用到的工具包括:DataX(數據同步/集成工具)、Data IDE(大數據開發套件)、Eclips(Java、MapReduce開發)。

 

 

-END-

 

轉自藍智雲海公眾號

 

相關文章

大數據打造你的變美頻道——數加平臺上小紅唇的大數據實踐 https://yq.aliyun.com/articles/72250
  藉助阿裡雲數加,小小的美甲行業被美甲幫玩出了天價
https://yq.aliyun.com/articles/70510
  與阿裡雲整個生態體系共同成長,更快更好的為房地產行業客戶提供高價值的服務
https://yq.aliyun.com/articles/70509
  蘇州協鑫與阿裡雲合作階段性完成,良品率已提升1%
https://yq.aliyun.com/articles/69333
  墨跡天氣-輕鬆處理每天2TB的日誌數據,支撐運營團隊進行大數據分析挖掘,隨時洞察用戶個性化需求 https://yq.aliyun.com/articles/68211
  阿裡雲數加讓企業更專註於業務,助力東潤環能高效利用大數據資源
https://yq.aliyun.com/articles/67275
  產品3周迭代一次,啟信寶駕馭8000萬企業徵信的平臺架構
https://yq.aliyun.com/articles/70359
  日交易筆百萬級,Ping++的大數據平臺架構
https://yq.aliyun.com/articles/70353
  專訪佰騰科技大數據團隊,談專利大數據領域的挑戰與實踐
https://yq.aliyun.com/articles/70412
  技術創業難?看匯合營銷如何玩轉大數據與機器學習
https://yq.aliyun.com/articles/70347
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Swift _ OC _ 混編 在OC環境下使用Swift. "GitHub源碼" ...
  • 前言 自Weex發佈伊始, 其口號 "Write Once, Run Everywhere"就吸引了大批前端與客戶端程式猿紛紛入坑, 我也不能獨善其中. 就我目前所學習Weex的經驗在此記錄一下, 由於我是一名剛入行不久iOS開發者, 所以這篇博客含金量不高, 下麵就簡單闡述下如何將Weex初步集成 ...
  • CoreAnimation 寄宿圖 博客園makedown支持不佳,如有需要請進 "GitHub" . 寄宿圖:圖層中所包含的圖 by:旭寶愛吃魚     針對於寄宿圖我在這裡只討論contents屬性以及Custom Drawing. contents &n ...
  • 在移動互聯網領域蓬勃發展的今天,APP的性能也成為各大公司重點關註的方向,該系列文章主要針對iOS的性能的幾個方面做一些研究。 什麼是HTTP2.0? 什麼是HTTP2.0? 網上很容易搜到關於HTTP2.0的概念的文章,這裡不再累述。 蘋果從iOS9開始支持HTTP2.0,對iOS開發人員來說,即 ...
  • 本文主要講述了在FineReport移動端中釘釘如何集成設計器的插件從而實現企業應用。 ...
  • phpMyAdmin的程式主要使用php和javascript開發,它的安裝使用都比較簡單而且已有很多相關介紹,今天來自騰訊雲資料庫團隊的高級開發工程師在此給大家介紹一下——源碼中的一個核心組件sql-parser ...
  • 3月9日14點,業內首個結合技術與應用的線上大數據技術峰會即將展開,屆時6位阿裡技術大咖與4位行業資深實踐者將從技術與業務兩個方面,與大家探討大數據如何最快落地到實踐。較為有看點的是: 最深入的實踐:本次線上峰會上,6個阿裡規模的大數據實踐將被深入分享,包括大數據平臺的性能調優、流式增量計算、持續發... ...
  • 前幾天卡Q在網上搜嘍大數據的課程,偶遇了廈門大學林子雨教授的大數據公開課,嚇得卡Q一身冷汗,為什麼呢? 這不,卡Q剛給自己的人生定了個小目標,比如,進入互聯網公司當個產品經理。因為在卡Q的眼裡,互聯網是個朝氣蓬勃的圈子,裡面的人都很牛掰,和聰明人共事,運氣總不會太差,所以,卡Q決定削尖了腦袋也要和聰... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...