本章詳細介紹了本系統的需求分析。本系統旨在實作一個使用者不僅能友善地檢視電影資訊,而且能擷取自己感興趣的推薦電影的系統。本系統的功能應當是較為完善的,推薦結果應當較為精準化,推薦效率應當高效,并且面對不斷增長的電影資料和使用者資料應當有着良好拓展性。此外,本系統應當以web頁面為最終呈現方式,以便于使用者在PC端或移動端等裝置上随時通路本系統。
虛拟機centos7部署運作示範
互動層提供了使用者與系統之間互動的途徑,通過簡潔直覺的web頁面将系統展示給使用者。業務邏輯層主要用于實作互動層的功能,根據業務邏輯實作使用者資訊、電影資訊的管理,同時選取合适的推薦算法來完成相關推薦。推薦算法層分為統計推薦、離線推薦和實時推薦。統計推薦主要用統計的方法如計算評論數或評分等來推薦;離線推薦主要反映使用者曆史的電影喜好,因為計算量巨大需要離線定時運作;實時推薦主要反映使用者近期的電影喜好,在離線計算好的資料基礎上可以做到秒級、毫米級的計算延遲。存儲層綜合關系型資料庫和非關系型資料庫來存儲使用者資料、電影資料和推薦結果集。互動層、業務邏輯層、推薦算法層和存儲層都将會部署在伺服器端,使用者在web頁面上浏覽時與伺服器端通過HTTP協定來進行資料傳輸。
windows本地部署運作示範
總結
本文從實際生活的應用出發,綜合運用各類技術,設計并實作了基于Spark的電影推薦系統。在本次課題研究中,所做的工作總結有以下幾點:
(1)學習了許多推薦算法的原理;
(2)學習了許多之前的未接觸過的技術,如Spark計算架構、ElasticSearch搜尋引擎、MongoDB資料庫和Vue前端架構等;
(3)詳細分析了本系統的功能性需求和非功能性需求;
(4)詳細設計了本系統的架構與各個功能子產品,詳細設計了系統所需的幾種推薦算法,如統計推薦、離線推薦和實時推薦算法,詳細設計了資料庫并給出了優化政策;
(5)測試了推薦算法的誤差,以及對系統進行了高并發的性能測試。
展望
雖然本文最終實作了基于Spark的電影推薦系統,但是仍還有進一步完善、優化和提升的空間。筆者提出以下兩點優化意見:
(1)搭建Spark高性能叢集
目前本系統還是三個節點的叢集模式,但是面對日益龐大的資料量,單機的計算能力就有點捉襟見肘了。當搭建了Spark高性能叢集,每台機器的計算和記憶體壓力會減輕不少,大大提高了計算效率。
(2)探索其它推薦算法
由于本系統中使用者評分矩陣十分稀疏,會對推薦算法的準确性有一定的影響。在以後的學習中,還可以探索其他推薦算法,使本系統具有更高的準确性。