金英華(沈陽師范大學,沈陽 110034)
?
基于物流平臺的智能推薦系統設計與實現
金英華
(沈陽師范大學,沈陽110034)
摘要:本文介紹了Hadoop及MapReduce模型的一些基本情況,包括對Hadoop的框架構成核心節點的主要工作及MapReduce模型的工作流程模式,對第二代Hadoop平臺簡的Yarn框架及其基本的工作流程進行了介紹,同時關注了一個嶄新的基于內存存儲的計算框架Spark。文中對智能化物流平臺的框架結構進行了整體的描述,包括WEB業務各層的結構的概要介紹,數據庫實例中抽取幾個表進行了簡單的表示,和智能化體系中核心部分推薦系統的設計結構的闡述。其中推薦系統部分較為詳細地介紹了系統的設計思路,從業務需求的分析,到系統結構的設計和系統工作的大體流程。
關鍵詞:推薦系統;Hadoop;物流平臺
下面以匹配客戶對象的智能推薦為例進行說明,智能推薦系統實現的功能目的,與天貓、京東的網站平臺的形式類似,當發貨方即貨主企業或生產制造企業等,登錄系統平臺網站時或者移動APP端時,系統的后臺經過智能計算核心組件模塊,為此類型的登錄客戶實時計算出它可能會感興趣的物流企業、運輸車隊等,這樣的承接方即以物流運輸為主體業務的一方,平臺將這樣的列表信息在瀏覽器中或者移動終端中為登錄用戶即時展示,以提高用戶體驗度。同樣,在物流運輸一方登錄時,也會顯示它可能感興趣的貨主企業。
平臺的智能推薦系統框架,主要由數據過濾、智能計算、數據存儲層和中央控制單元四個部分組成,如圖1所示。智能推薦系統的數據來源,主要來自于兩種類型數據即實時型數據和批量類型數據。其中批量類型這個部分,主要是從結構化的和非結構化的數據庫中取得,即Oracle數據庫實例的關系表和HBase鍵值對的數據表;實時型的數據,采用了技術成熟度較高、響應度高、應用范圍比較廣的Redis數據庫作為平臺緩存數據庫,平臺性能在此基礎上得到了大幅度的提升。
數據ETL模塊作為過濾層發揮其作用,主要是為推薦系統算法提供基礎計算數據,對原始數據數據進行清理轉換,以便核心的智能計算單元發揮更高性能提高處理數據的速度,尤其是在實時性的處理方面,一旦從Oracle或者MongoDB、Redis這些數據源取得的數據過于冗余,或者是與智能計算單元接口所要求的數據類型、格式等不相一致時,對于計算的性能影響也是顯著的。根據數據來源的類型不同,相應地,數據過濾層的接口部分在數據源類的內部實現同樣是以結構化和非結構化進行分組別進行設計和編碼實現,對外則統一接口命名進行多態繼承,這樣的傳統OOP面向對象的編程模型方式對于系統后期在數據層的擴展是有利的,尤其是在非結構化類型的數據庫快速發展的時代,鍵值型數據庫、圖存數據庫等等,對于這類的接口模塊的可擴展性是一種最基本的開發要求。
根據物流行業的運作特性,主要是監控和分析貨源發布、訂單處理等操作的工作時間節點,一般情況下,時間節點集中在白天的工作時間范圍內,因此,對于批量數據的分析計算工作,論文研究中參考電商平臺的批量數據分析處理方式,批量數據處理工作的啟動時間點根據這個具體運作的明顯的特點,設置為每日21:00點開始進行批量數據分析作業。
3.1數據預處理
智能推薦系統在啟動批量數據分析工作后,首先由推薦系統的數據ETL中的提取業務模塊通過JDBC連接各WEB平臺中的數據源,包括了Oracle數據庫和MongoDB數據庫(前期作為GPS數據存儲,后期用來做路線推薦用),向這些數據源發送查詢請求,以便從實例的結構表中取得數據集,對讀取后數據集以貨主公司ID和物流公司ID進行分組計算,計算出貨主企業對物流公司評價均值,對平臺數據源中的結構化數據計算完成后,由轉換存儲功能模塊將數據以預定數據格式,即鍵值對的形<Key:{itemid:rate}>進行存儲處理工作,將結構化的數據轉換為非結構化記錄數據集,最后,由數據ETL中的傳輸功能模塊調用Hadoop的FileObject接口將過濾后數據存儲到分布式文件系統HDFS中,以便推薦系統中的計算服務層各個計算單元直接處理調用。
3.2智能推薦算法流程
為了達到推薦的目的并減小存儲容量,一般為推薦結果設置一個K值即為用戶推薦的物品列表只選取前K個物品,實驗中在配置文件中提前設置K值。
推薦系統計算層的計算單元根據上下文環境配置直接從Haddoop平臺的分布式文件系統HDFS中讀取相應的預處理后的批量數據文件,由系統自動計算文件的大小對其進行分片,默認在上下文環境配置中設置為64M或者128M即可,每個分片會對應一個Map任務節點,在Map任務節點中執行計算任務,逐行讀取數據以鍵值存入上下文數據中,為了減小Reduce任務節點的計算壓力,針對當前的Map任務節點由Combiner單元執行一次的合并處理,Hadoop框架根據各Map任務節點中鍵值和數據大小啟動相應數量的Reduce任務節點,在Reduce任務節點中以鍵值(貨主ID)合并來自不同Map任務節點中的上下文數據,這時可以得到N個貨主評價向量,由N個貨主評價向量計算得出項目(即物流公司)的同現矩陣,最后N個貨主評價向量分別與同現矩陣相乘得到N個貨主的推薦向量,選取前K個推薦結果存入緩存數據庫中,完成推薦計算。
整個推薦計算完成后,當WEB業務要實現推薦效果時,即可直接從緩存數據庫中讀取最新的推薦結果,為貨主企業推薦K個比較感興趣物流企業。
參考文獻:
[1]Chert MS. Data mining: arl overview from a database perspective[J]. IEEE Trans on Knowledgeand data engineering,1996:8(06): 866-883.
[2]Pang-Ning Tan, Michael Steinbach, Yipin Kumar著.范明,范宏建等譯.數據挖掘導論[M].北京:人民郵電出版社,2006.
DOI:10.16640/j.cnki.37-1222/t.2016.11.137
作者簡介:金英華(1965-),女,遼寧蓋縣人,碩士研究生,副教授,研究方向:計算機軟件。