基于Spark集群的電影分享社交平臺的設(shè)計與實現(xiàn)_第1頁
基于Spark集群的電影分享社交平臺的設(shè)計與實現(xiàn)_第2頁
基于Spark集群的電影分享社交平臺的設(shè)計與實現(xiàn)_第3頁
基于Spark集群的電影分享社交平臺的設(shè)計與實現(xiàn)_第4頁
基于Spark集群的電影分享社交平臺的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于Spark集群的電影分享社交平臺的設(shè)計與實現(xiàn)DesignandImplementationofMovieSharingSocialPlatformsBasedonSpark

摘要本論文主要針對互聯(lián)網(wǎng)上海量信息對用戶造成的選擇困擾問題,設(shè)計并實現(xiàn)了一款基于Spark集群的電影分享社交平臺,該平臺使用SpringBoot框架搭建Web平臺,用Spark集群以及協(xié)同過濾算法對數(shù)據(jù)進(jìn)行計算,推薦用戶可能喜歡的電影,過濾用戶不需要的垃圾信息,向用戶提供個性化服務(wù),以及使用Socket技術(shù)實現(xiàn)在線實時聊天,讓用戶體驗良好的在線互動,并且增加了電影評論的功能,讓用戶在挑選電影觀看之前能夠快速通過電影評分以及他人評價,得到電影是否適合自己觀看的合理判斷。解決了用戶選擇困擾的問題,在智能推薦方面與傳統(tǒng)電影網(wǎng)站有明顯的改進(jìn)。關(guān)鍵詞:推薦系統(tǒng);協(xié)同過濾算法;Spark;SocketAbstractThisthesisfocusesontheInternetinShanghaiquantityinformationfortheuserthechoiceoftroubleproblem,designafilmbasedontheSparkclustersharesocialplatform,usingSpringBootframeworktobuildaWebplatform,withtheSparkclusterandcollaborativefilteringalgorithmforcalculation,datasuggestedusersmightlikemovies,filteringspam,usersdon'tneedtoprovidecustomerswithpersonalizedservice,andrealizereal-timechatonlineSockettechnology,makegooduserexperienceofonlineinteraction,designthefunctionofmoviereviews,Itenablesuserstoquicklyjudgewhetherthemovieissuitablefortheirownviewingthroughmovieratingandotherpeople'sevaluationbeforeselectingthemovietowatch.Theproblemofuser'schoiceissolved,andthereisanobviousimprovementbetweentheintelligentrecommendationandthetraditionalmoviewebsite.Keywords:RecommendationSystem;CollaborativeFiltering;Spark;Socket目錄第一章緒論 第二章基礎(chǔ)技術(shù)介紹2.1框架以及基礎(chǔ)技術(shù)介紹2.1.1Spark和Hadoop介紹Spark作為專門為大數(shù)據(jù)量提供快速迭代式計算的通用內(nèi)存并行計算框架,雖然發(fā)布的時間不長,但已成為目前主流集群計算平臺之一,可以很好的應(yīng)用于大規(guī)模的數(shù)據(jù)處理程序并且改善高延遲的問題。而另一個有著重要地位的集群計算平臺,是開源分布式計算平臺Hadoop,Hadoop中的MapReduce對于Spark的發(fā)展起到了關(guān)鍵性的作用,Spark計算模塊去其糟粕取其精華,繼承分布式計算的優(yōu)點,在此基礎(chǔ)之上,使用RDD靈活的改善了計算方式,直接的在內(nèi)存當(dāng)中計算數(shù)據(jù),并且能夠完成迭代功能。完善了MapReduce只能夠?qū)⒂嬎憬Y(jié)果保存到磁盤中的方式,大大的提高了計算的效率,根據(jù)官方數(shù)據(jù)的統(tǒng)計,在磁盤讀取數(shù)據(jù)的前提之下,Saprk相對于HadoopMapReduce的計算速度,能夠提高到10倍以上,在內(nèi)存讀取數(shù)據(jù)的前提之下,甚至可以提高到100倍的速度。其次Spark的一大特色或者說優(yōu)點,便是RDD彈性分布式數(shù)據(jù)集[6],Spark將其作為最基本的單位,它們是一些不能更改的只讀集合,彈性數(shù)據(jù)的意思就是,這些數(shù)據(jù)即使丟失了,也仍然可以通過數(shù)據(jù)衍生的過程對這些集合進(jìn)行重建恢復(fù),所以說彈性,從而保證了Spark的容錯性。而RDD的優(yōu)點不止于此,RDD不儲存真實的數(shù)據(jù),而是利用抽象的數(shù)據(jù)集,儲存索引,利用索引去定位數(shù)據(jù)的真實儲存,再使用接口的方式去拿到數(shù)據(jù)進(jìn)行計算處理,利用該特點,更多的將數(shù)據(jù)儲存在能夠直接進(jìn)行運算的內(nèi)存中,而不去浪費硬盤空間,極大的節(jié)省了IO的開銷,內(nèi)存空間耗盡時才將數(shù)據(jù)放入硬盤。利用RDD的優(yōu)勢,Spark在性能上面遠(yuǎn)遠(yuǎn)的超過Hadoop,本系統(tǒng)使用的是Spark融入Hadoop生態(tài)系統(tǒng)的平臺進(jìn)行數(shù)據(jù)的計算。2.1.2SpringBoot框架簡介SpringBoot是目前主流使用的輕量級Java快速開發(fā)框架,有著非常方便的三大核心優(yōu)勢,一是自動配置的功能,封裝好Spring框架中基礎(chǔ)的屬性功能,可以采取注解的方式快速的完成項目配置。二是起步依賴,在開發(fā)開始前幫助引入需要的依賴庫,對于后續(xù)開發(fā)省去不少的麻煩。三是Actuator,探究底層封裝代碼的邏輯,讓開發(fā)者能夠更加深刻的理解原理。2.1.3WebSocket技術(shù)原理WebSocket[7]作為一個持久化的協(xié)議,有良好高效的通信能力,解決HTTP的高延遲不同步的問題,只需要一次的請求,獲取持久的連接,節(jié)省資源的消耗,提高性能,是作為實現(xiàn)實時通信功能最優(yōu)選擇的技術(shù)。本課題的社交模塊就是使用該技術(shù)實現(xiàn)了客戶端進(jìn)行實時的聊天,向用戶提供較好的通信體驗服務(wù)。2.2推薦系統(tǒng)算法介紹2.2.1協(xié)同過濾推薦算法協(xié)同過濾推薦算法[8](CF,CollaborativeFiltering)根據(jù)用戶瀏覽過的頁面信息,給予較高評價的物品以及常常關(guān)注的物品信息,去計算得到該用戶的行為習(xí)慣、興趣愛好等,從而向用戶推薦用戶可能會感興趣的物品的算法。獲取原始數(shù)據(jù)之后,對數(shù)據(jù)進(jìn)行預(yù)處理,得到用戶-物品評分矩陣,再使用算法進(jìn)行計算,通過計算得到當(dāng)前用戶對其它物品喜好程度的預(yù)測推薦分?jǐn)?shù),依據(jù)這個分?jǐn)?shù),向用戶推薦分?jǐn)?shù)高的物品,大概率符合用戶的喜好。這種算法能夠很好的應(yīng)用在商業(yè)性的電商軟件平臺等,提高用戶的點擊率、購買率,從而提高營業(yè)額。由不同的模型和計算方式,協(xié)同過濾算法基于這兩種不同的模式流程,創(chuàng)建不同的模型,可以分為基于物品的協(xié)同過濾算法(ItemCF)和基于用戶的協(xié)同過濾算法(UserCF)?;谖锲返膮f(xié)同過濾算法,是通過獲取、統(tǒng)計每一個用戶對平臺內(nèi)選擇過的物品進(jìn)行評分評價操作,表達(dá)對物品的態(tài)度,通過統(tǒng)計用戶對不同物品的喜惡判斷,計算物品之間的相似程度,再向用戶推薦用戶喜愛物品相似程度分?jǐn)?shù)較高的物品。舉例如下表2-1所示:表2-1基于物品的協(xié)同過濾用戶-物品評分矩陣User/ItemABCDU1喜歡喜歡U2喜歡喜歡U3喜歡喜歡喜歡通過用戶對同一個物品的簡單評分,發(fā)現(xiàn)得知喜歡A物品的用戶大概率也喜歡C物品,于是將C物品判斷為A物品的相似物品,向喜歡過A物品,并且對C物品沒有接觸和了解的用戶,推薦C物品,這里利用的是用戶對物品的某一項特別的優(yōu)點喜好,判斷該優(yōu)點為特定用戶人群的喜好點,以此作為依據(jù)去統(tǒng)計其它擁有此項愛好點的物品,將此類物品歸類評分,推薦分?jǐn)?shù)較高的物品,以上是基于物品的協(xié)同過濾算法簡單介紹?;谟脩舻膮f(xié)同過濾算法是通過系統(tǒng)獲取的數(shù)據(jù)進(jìn)行初步處理得到簡潔的用戶對物品的評分表,分割數(shù)據(jù)換算成矩陣進(jìn)行計算,統(tǒng)計得到每一個用戶的空間向量模型,計算向量和向量的空間距離,判斷用戶是否為鄰居用戶,再通過計算得到用戶可能會喜歡有著相同愛好的用戶評分較高的物品推薦分?jǐn)?shù),向用戶推薦分?jǐn)?shù)較高的物品。舉例如下表2-2所示:表2-2基于用戶的協(xié)同過濾用戶-物品評分矩陣User/ItemABCDU1喜歡喜歡喜歡U2喜歡U3喜歡喜歡喜歡由以上的用戶對物品的簡單喜愛評價分析,能夠發(fā)現(xiàn)用戶一號和用戶三號對相同的物品有相同的判斷結(jié)果,可以稱為相鄰鄰居用戶,從而可以把U1未評價過的但是U1的相鄰用戶U3喜歡的物品C推薦給U1,反之亦然。2.2.2內(nèi)容推薦算法內(nèi)容推薦算法[9](CB,Content-BasedRecommendations)是基于系統(tǒng)平臺內(nèi)的物品進(jìn)行屬性分析,特點統(tǒng)計,用戶喜好點發(fā)掘,提煉為物品特征,然后通過用戶的歷史行為記錄,統(tǒng)計用戶對特定屬性的估值評分,計算用戶偏好,從而匹配有著與用戶偏好相同的物品,進(jìn)行推薦。對物品內(nèi)容進(jìn)行特征提取又分為兩種方式,第一種是標(biāo)簽化特征,比如電影的類型,就是標(biāo)簽化特征的一種,利用類型可以簡潔明了的提取特征。第二種是高頻詞特征,對于物品形容的內(nèi)容進(jìn)行高頻詞提取,權(quán)值越大的詞向量表示在內(nèi)容中的地位越是重要,從而統(tǒng)計權(quán)值較大的高頻詞作為該物品的特征,常見特征提取算法是最近鄰方法(KNN,K-NearestNeighbor)、決策樹算法(DT,DecisionTree)、樸素貝葉斯算法(NB,NaiveBayes)等等,由于本系統(tǒng)未選擇內(nèi)容推薦算法,在此不對詳細(xì)計算算法做過多介紹。內(nèi)容推薦算法的優(yōu)勢在于用戶之間擁有獨立性,不依靠其它用戶的數(shù)據(jù)進(jìn)行計算。但該算法的缺陷是對文本需求較高,需要詳細(xì)的對物品的描述進(jìn)行特征提取,有一定的局限性。舉例如下表2-3所示:表2-3基于內(nèi)容推薦的用戶-物品評分矩陣User/ItemA(愛情、喜劇)B(驚悚、懸疑)C(搞笑、喜劇)D(愛情、喜劇)U1喜歡U2喜歡喜歡U3喜歡喜歡由以上表格可以看出,物品A與物品D是屬性相似(相同)的物品,可以向喜歡了A物品的用戶推薦D物品,同理也可以向喜歡了D物品的用戶推薦A物品,在此表格中可以向A用戶推薦D物品,這就是基于物品內(nèi)容推薦的簡單模型介紹。2.2.3相似推薦算法相似推薦算法主要是針對用戶操作行為較少,推薦依據(jù)缺乏的問題,對用戶有過關(guān)注的某個物品,找到相似集合,向用戶進(jìn)行推薦,依據(jù)物品的詳細(xì)屬性,作為屬性向量,進(jìn)行物品之間對比,統(tǒng)計向量相似權(quán)值之和,獲得物品的相似權(quán)值,將權(quán)值較高的集合向用戶進(jìn)行推薦。但缺點在于推薦結(jié)果的準(zhǔn)確性不高,推薦結(jié)果是基于用戶歷史行為記錄的,積累了一定的用戶行為記錄數(shù)據(jù),推薦結(jié)果的準(zhǔn)確度才能夠提高。2.2.4關(guān)聯(lián)規(guī)則推薦算法關(guān)聯(lián)規(guī)則推薦算法[10],簡單的來說就是推測事件之間的關(guān)聯(lián)性,若A事件發(fā)生的情況下,大概率B事件也會發(fā)生,那么A事件與B事件就有著一定的關(guān)聯(lián)規(guī)則,統(tǒng)計這樣的規(guī)則,需要一定規(guī)模的用戶歷史行為數(shù)據(jù),最名的例子就是“尿布與啤酒”,看似無關(guān)聯(lián)的尿布和啤酒,卻是一起成交率最高的商品,通過分析用戶歷史行為數(shù)據(jù)得到這樣的關(guān)聯(lián)之后,只要把啤酒商品與尿布商品放在一起推薦給客戶,可以同時的促進(jìn)兩樣商品的售賣,給顧客更好的服務(wù)同時也促進(jìn)了銷售額。關(guān)聯(lián)規(guī)則推薦算法就是利用這樣的原理,對用戶進(jìn)行推薦,該算法需要使用到概率論的許多算法,需要進(jìn)行數(shù)據(jù)的挖掘,統(tǒng)計發(fā)現(xiàn)出事件中的較為經(jīng)常出現(xiàn)的事件集合,根據(jù)權(quán)值的比重進(jìn)一步的推出與之相關(guān)聯(lián)的操作,在計算關(guān)聯(lián)規(guī)則中常常會用到的算法是Apriori算法。2.2.5推薦系統(tǒng)評估指標(biāo)推薦系統(tǒng)離線評測的重要指標(biāo)就是評分預(yù)測,一般通過兩種計算方法,一是均方根誤差(RootMeanSquareError),二是平均絕對誤差(MeanAbsoluteError)。均方根誤差(RMSE)是指的具體事實發(fā)生統(tǒng)計的數(shù)據(jù)值與系統(tǒng)計算得出的結(jié)果值之間的差異的樣本標(biāo)準(zhǔn)差,具體的公式如下2-1:RMSEX,?=1m平均絕對誤差(MAE)指的是系統(tǒng)計算得出的結(jié)果值與具體事實發(fā)生統(tǒng)計的數(shù)據(jù)值之間的絕對誤差的平均值,具體公式如下2-2:MAEX,?=1mi=1m?2.3相似度計算公式2.3.1歐幾里得距離歐幾里得距離也稱歐式距離(EuclideanDistance),這里可以引出另外一個概念,就是歐幾里得空間,能夠觀測到的任何物品,若是想要對它們進(jìn)行計算,對抽象概念束手無策時,可以將它們放入一個n維的歐幾里得空間,使用向量的方式對這樣的物體進(jìn)行觀測統(tǒng)計,甚至是計算,那么當(dāng)計算兩個向量之間的距離時,此時用到的便是歐幾里得距離,在推薦領(lǐng)域中,可以認(rèn)為這兩個抽象概念上的物體它們在同一個向量空間的空間距離越是相近,就代表這兩樣物體很是相似,由此可以統(tǒng)計相似項集,不同的維度不同的空間,使用的計算公式也隨之變化,距離公式具體如下面的公式2-3:dx,y=x12.3.2曼哈頓距離曼哈頓距離(ManhattanDistance),這里可以簡單的認(rèn)為是高中知識中路程與位移二者之間的路程計算公式,位移為起始點至終點兩點一線的直線距離,但在實際生活當(dāng)中需要用到的往往是實際的路程距離,曼哈段距離便是這個實際的路程距離,推薦算法中使用的也是此實際路程距離,計算該距離的具體公式如下2-4:dx,y=i=1n2.3.3余弦相似度余弦相似度,在初始數(shù)據(jù)用戶-評分矩陣中,通過不同數(shù)據(jù)的統(tǒng)計分析,去構(gòu)建一個在數(shù)學(xué)領(lǐng)域中可以計算的向量,來代表此用戶,進(jìn)行數(shù)學(xué)計算,通過提供的不同數(shù)據(jù),去創(chuàng)造不同的維度空間,用來容納每一個用戶向量,而這里的余弦相似度就是計算這個抽象特定的空間內(nèi)向量之間的空間距離,具體計算使用向量之間的余弦值表示,依此評判兩個用戶之間的相似程度,余弦值的取值范圍在0~1之間,距離和余弦值的大小成反比關(guān)系,相似程度與余弦值大小成正比關(guān)系。具體的公式如下2-5:simu,v=cosu2.4本章小結(jié)本章介紹了課題有關(guān)的相關(guān)技術(shù),在較為出色的一些算法之中做了比較,選擇最適合本課題研究的基于物品的協(xié)同過濾算法作為本課題的核心計算算法,此外還介紹了在數(shù)據(jù)處理過程中會使用到的一些算法,做數(shù)據(jù)的預(yù)處理,方便模型的搭建,討論了本課題基礎(chǔ)框架技術(shù),合理的利用框架的便利去實現(xiàn)課題研究。第三章離線推薦系統(tǒng)設(shè)計3.1集群搭建設(shè)計本課題研究選擇搭建完全分布式集群,由于資源有限,本系統(tǒng)使用了Vmware虛擬機(jī)實現(xiàn)完全分布式的集群搭建,本系統(tǒng)的集群設(shè)計如圖3-1所示:圖3-1Spark集群搭建系統(tǒng)設(shè)計Hadoop集群搭建完畢如圖3-2和3-3所示:圖3-2Hadoop集群搭建成功效果圖1圖3-3Hadoop集群搭建成功效果圖2Spark集群搭建完畢如圖3-4所示:圖3-4Spark集群搭建成功效果圖3.2推薦算法計算步驟3.2.1樣本處理離線系統(tǒng)需要對數(shù)據(jù)進(jìn)行計算,這里輸入的數(shù)據(jù)是用戶-物品的評分?jǐn)?shù)據(jù),樣本處理的這個步驟就是我們從數(shù)據(jù)庫的數(shù)據(jù)當(dāng)中去提取用戶-物品的評分?jǐn)?shù)據(jù),編寫Java程序連接數(shù)據(jù)庫,讀取數(shù)據(jù)庫表中用戶id、電影id、評分屬性,放入Map中儲存,創(chuàng)建輸出流,將數(shù)據(jù)按照固定格式寫入csv文件當(dāng)中,輸出文件,本地連接Spark集群,再復(fù)制上傳到hdfs的input文件夾中,初步的數(shù)據(jù)處理就完畢了。流程圖如下圖3-5所示:圖3-5數(shù)據(jù)預(yù)處理流程圖3.2.2模型搭建首先在集群的hdfs讀取文件數(shù)據(jù),使用用戶作為索引進(jìn)行統(tǒng)計分組,統(tǒng)計被用戶選擇、偏好過的物品,建立物品的同現(xiàn)矩陣,物品之間兩個兩個進(jìn)行匹配統(tǒng)計,同時被選擇的次數(shù),這就是物品同現(xiàn)矩陣,用簡單的例子表示如下表3-1所示:表3-1用戶-電影評分表UserMovieScore1A5.01B5.01C3.01D4.02A3.02D5.03A4.03C5.03D5.0物品同現(xiàn)矩陣如下圖3-2所示:表3-2物品同現(xiàn)矩陣

ABCDA3123B1111C2122D3123評分矩陣表示說明如下表3-3所示:表3-3物品同現(xiàn)矩陣2A3.0B0.0C0.0D5.0最后使用用戶-物品評分矩陣與物品同現(xiàn)矩陣相乘,便能夠得到最終的推薦分?jǐn)?shù)如下圖3-6所示:圖3-6推薦分?jǐn)?shù)計算3.3基于物品的協(xié)同過濾算法原理基于物品的協(xié)同過濾算法底層的邏輯,其實是去判斷兩樣物品在用戶心中的喜好分?jǐn)?shù)比值高低,實際上物品是抽象的不可計算的,但是數(shù)學(xué)使之變?yōu)橄蛄?,雖然這個過程中無法保證建立的物品模型與現(xiàn)實中完全一致,但在可完成范圍內(nèi),盡可能地通過合理性去判斷統(tǒng)計物品的各種屬性,在理論上得到模型相似的結(jié)果,并且在實踐中統(tǒng)計計算方式的準(zhǔn)確性與合理性,可以用兩種方式去理解,下面采取直觀的圖表法解釋如何使用用戶-物品的評分表,計算物品之間的相似度,首先隨意例舉了一個用戶-物品評分表如下表3-4所示:表3-4原理舉例評分User1User2A5.04.0B4.55.0C3.55.0D2.03.0E1.52.5接下來利用散點圖表示物品的相似度如下圖3-7所示:圖3-7物品相似度散點圖可以很好的從散點圖看出,物品D和物品E的距離相近,物品A與物品B的距離相近,這里的距離便是這兩個物品之間在某一個維度下的距離,在此稱為相似度,即可判斷為物品D和物品E為相似物品,可以向喜愛D物品的用戶推薦E物品,物品A與物品B也是同理,使用歐幾里得距離算法可以計算得出每項物品之間的相似度,從而得到推薦分?jǐn)?shù)。第二種方式,可以理解每一項物品都為一個n維空間的向量,這里的n維表示物品帶有的屬性,屬性越多的物品,評判的維度越多,那么物品的形象也會更加的豐富,計算推薦的結(jié)果準(zhǔn)確度也隨之上升,采取計算余弦相似度的計算公式,得到推薦分?jǐn)?shù)。3.4本章小結(jié)本章主要介紹了系統(tǒng)搭建的集群設(shè)計,以及搭建的過程,詳細(xì)的講解了推薦系統(tǒng)計算的步驟,使用圖文的方式簡潔明了的展示了數(shù)據(jù)的變化,以及算法原理的解析,相似度的本質(zhì)原理。第四章Web社交平臺設(shè)計4.1系統(tǒng)總框架本系統(tǒng)主要分為兩個核心模塊,離線計算推薦系統(tǒng)和Web網(wǎng)頁社交系統(tǒng),以及四個不同的層次,數(shù)據(jù)層、計算層、結(jié)果層和表示層,不同的模塊提供不同的服務(wù),每個層次都有對應(yīng)的工作職責(zé),有條理的傳輸數(shù)據(jù),具體的系統(tǒng)架構(gòu)如下圖4-1所示:圖4-1系統(tǒng)架構(gòu)圖4.2系統(tǒng)程序設(shè)計4.2.1功能設(shè)計本系統(tǒng)的WEB設(shè)計的功能如下:(1)用戶模塊:用戶進(jìn)入網(wǎng)站可以注冊擁有自己的賬戶,登錄賬號,可以編輯自己的個人信息,換頭像、寫個人簡介,與其它用戶成為好友,也可以登出賬號。(2)首頁模塊:沒有注冊賬號的用戶仍然可以在首頁查看熱門的電影、使用查詢模塊、博客模塊,正常注冊登錄了的用戶可以使用更多的用戶模塊、評分模塊和專屬的推薦模塊。(3)查詢模塊:用戶可以在搜索框輸入關(guān)鍵詞,進(jìn)行全局搜索自己想要找到的電影信息,還有高級篩選搜索,選擇年份、地區(qū)、類型等等,進(jìn)行高級篩選出匹配條件的電影。(4)評分模塊:用戶選擇看過的電影,可以對電影進(jìn)行評分與發(fā)表感想,對電影進(jìn)行一個主觀的評價,同時也可以選擇沒有看過的電影,查看其他人的主觀評價,從而對電影進(jìn)行一定的判斷。(5)推薦模塊:用戶通過使用本系統(tǒng),在對電影進(jìn)行評分過后,系統(tǒng)收集用戶行為記錄,對不同的用戶進(jìn)行個性化的推薦電影,每個用戶都有專屬的推薦模塊。(6)詳情模塊:用戶可以點擊電影圖片、名字等等,查看該電影的詳細(xì)信息介紹,包括了演員表、導(dǎo)演、地區(qū)、上映年月份、總體評分、劇情梗概等等,也包括博客模塊,有發(fā)布日期、大圖展示、全文展示等等。(7)博客模塊:用戶可以在本平臺上發(fā)布博客,插入圖片,查看他人的博客,發(fā)表評論等操作。(8)聊天模塊:用戶在本平臺上遇見感興趣的影評,想與有著相同見解的用戶進(jìn)行探討時,除了可以在評論下發(fā)布回復(fù),還可以與用戶進(jìn)行聊天對話。具體的詳情介紹如下圖4-2所示:圖4-2系統(tǒng)功能架構(gòu)圖4.2.1數(shù)據(jù)庫設(shè)計本課題選擇使用MySql數(shù)據(jù)庫技術(shù)作為數(shù)據(jù)支撐,按照系統(tǒng)的數(shù)據(jù)邏輯,分別設(shè)計了如下的數(shù)據(jù)庫表,具體結(jié)構(gòu)如下圖4-3所示:圖4-3數(shù)據(jù)庫總體架構(gòu)圖(1)User表,主要存儲用戶的個人信息,性別、名字、郵箱、密碼、手機(jī)號等等的基本屬性。如下表4-1所示:表4-1用戶表名類型注釋idbigint用戶唯一id(主鍵)usernamevarchar用戶昵稱passwordvarchar賬號密碼emailvarchar郵箱(賬號)mobilevarchar手機(jī)號sexvarchar性別imageurlvarchar頭像圖片地址aboutvarchar個人介紹(2)Movies表,主要儲存電影的基本信息,電影名稱、圖片地址、劇情簡介、導(dǎo)演、演員、時長、類型等等。熱門電影與最新電影主要字段與電影表屬性基本一致,在此只例舉電影表結(jié)構(gòu),具體如下表4-2所示:表4-2電影表名類型注釋idint電影的唯一id(主鍵)namevarchar電影名稱directorvarchar導(dǎo)演信息actortext演員信息scoredecimal電影總體評分datelinevarchar上映年份cityvarchar電影制作國家themetext電影劇情梗概countbigint影評數(shù)量imageurltext電影海報地址numberbigint電影評價數(shù)量typevarchar電影類型writertext電影編劇languagevarchar語言timevarchar電影上線時間imburltext線上播放地址(3)Comment表,主要儲存的是用戶對電影的影評以及打分分?jǐn)?shù),博客的評論表與此表類似,屬性大致相同,在此只例舉影評表,具體如下表4-3所示:表4-3影評表名類型注釋idbigint影評的唯一標(biāo)識(主鍵)movies_idint電影iduser_idint用戶iduser_namevarchar用戶昵稱scoredecimal用戶打分(一位小數(shù)點)dayvarchar評論日期時間reply_countint回復(fù)數(shù)量contentvarchar影評內(nèi)容(4)Blog表,主要是儲存用戶博客內(nèi)容,具體結(jié)構(gòu)如下表4-4所示:表4-4博客表名類型注釋idbigint博客的唯一標(biāo)識(主鍵)user_idbigint發(fā)表用戶iduser_namevarchar發(fā)表用戶昵稱titlevarchar博客標(biāo)題contenttext博客內(nèi)容dayvarchar發(fā)表日期時間imageurlvarchar博文圖片reply_countint評論數(shù)量(5)Friend表,此表主要儲存與用戶建立會話的關(guān)系列表,具體結(jié)構(gòu)如下表4-5所示:表4-5好友列表名類型注釋idbigint好友關(guān)系唯一標(biāo)識(主鍵)user_idbigint用戶iduser_namevarchar用戶昵稱f_idbigint好友idf_namevarchar好友昵稱f_imagevarchar好友頭像(6)Record表,主要儲存的是好友之間的聊天記錄,具體結(jié)構(gòu)如下表4-6所示:表4-6聊天記錄列表名類型注釋idbigint聊天記錄唯一標(biāo)識(主鍵)user_idbigint用戶iduser_namevarchar用戶昵稱f_idbigint好友idf_namevarchar好友昵稱messagetext聊天內(nèi)容timevarchar發(fā)送時間meint是否自己發(fā)出4.3本章小結(jié)本章主要介紹了系統(tǒng)的總體架構(gòu)設(shè)計,詳細(xì)的描述了系統(tǒng)功能設(shè)計,每個模塊的職責(zé),展示了整體系統(tǒng)架構(gòu)圖、功能框架圖,闡述了使用的數(shù)據(jù)庫技術(shù),講解了數(shù)據(jù)庫的總體架構(gòu),以及數(shù)據(jù)庫總體的結(jié)構(gòu)圖,接下來分別展示了不同表的不同結(jié)構(gòu),展示了詳細(xì)的表字段和類型,和不同表之間的關(guān)聯(lián)。第五章具體功能實現(xiàn)與測試5.1環(huán)境搭建(1)Windows(本地主機(jī))操作系統(tǒng):Windows10;處理器:Intel(R)Core?i7-8750HCPU:2.21GHz內(nèi)存:16.0GBJAVA:jdk-1.8.0_91Maven:ApacheMaven3.6.1Web服務(wù)器:ApacheTomcat7.0.82開發(fā)平臺:IntelliJIDEA2018.2.4數(shù)據(jù)庫:MySQL5.6.5開發(fā)框架:SpringBoot(2)Linux(三臺虛擬機(jī))操作系統(tǒng):CentOS7內(nèi)存:2.0GBJAVA:jdk-1.7Hadoop版本:Hadoop-2.7.3Spark版本:Spark-系統(tǒng)功能實現(xiàn)5.2.1用戶模塊功能登錄與注冊是交互平臺中最基礎(chǔ)的功能,做基本信息提示輸入,用戶只需要按照提示填入相關(guān)關(guān)鍵數(shù)據(jù),前端會對每一個屬性格式進(jìn)行規(guī)范檢查,設(shè)置賬號和密碼,使用MD5進(jìn)行密碼加密,存入數(shù)據(jù)庫,將標(biāo)識的關(guān)鍵字段,也可稱為主鍵,設(shè)置為自增格式,以此作為用戶賬號的DNA,在登錄的時候,校驗賬號與密碼的正確性,校驗成功后,取出用戶對象,存入session會話中,由此完成了用戶賬號的存入,即是注冊,以及對象持久化的登錄功能。界面設(shè)計如圖5-1所示:圖5-1登錄界面5.2.2首頁模塊功能首頁主要是展示了不同的電影列表,有熱門電影列表、最新電影列表、精選電影列表、推薦電影列表,只有登錄了賬號的用戶才能夠顯示推薦電影列表,這個模塊需要針對用戶生成用戶專屬的推薦模塊,未登錄的情況下不予展示。實現(xiàn)的原理是利用Spring框架進(jìn)行頁面的跳轉(zhuǎn)、數(shù)據(jù)的傳輸、數(shù)據(jù)庫操作等等,主要的流程圖如下圖5-2所示:圖5-2頁面跳轉(zhuǎn)業(yè)務(wù)流程首頁還包含了其它的小模塊鏈接,所有電影的列表的展示鏈接、博客展示鏈接、高級篩選功能、查詢功能、個人中心等。首頁展示如下圖5-3所示:圖5-3首頁部分展示5.2.3詳情模塊功能該模塊包括了電影的詳情界面、博客詳情界面、評論區(qū)實現(xiàn)翻頁展示的功能,發(fā)表評論的功能。具體頁面如下圖5-4、5-5所示:圖5-4電影詳情頁面部分展示圖5-5博客詳情頁面部分展示5.2.4搜索模塊功能用戶需要提供一個相關(guān)的“引子”作為關(guān)鍵字,在數(shù)據(jù)庫中對這個關(guān)鍵字進(jìn)行模糊的比較查詢,顯示符合條件的電影列表,包括高級篩選,也是搜索模塊中的功能,根據(jù)類型、年份、地區(qū)進(jìn)行模糊搜索,搜索無結(jié)果時,給用戶無結(jié)果的提示。具體的流程邏輯圖如下圖5-6所示:圖5-6搜索功能邏輯流程圖具體頁面設(shè)計如下圖5-7、5-8、5-9所示:圖5-7搜索關(guān)鍵字無結(jié)果返回顯示頁面圖5-8高級篩選選項卡圖5-9搜索結(jié)果返回頁面5.2.5聊天模塊功能本模塊使用的核心技術(shù)主要是WebSocket技術(shù),代替以往使用輪詢的老舊方式進(jìn)行實時的通信,在這里先來看一下簡單Socket模型如下圖5-10所示:圖5-10Socket簡單模型在這里只需要使用HTTP協(xié)議進(jìn)行客戶端與服務(wù)端之間的一次交互握手,建立一條全雙工的通信通道,單獨被WebSocket使用傳輸信息,簡單快捷,并且節(jié)省資源,性能較高,是作為實時通信聊天功能的最佳選擇。下面來看具體的兩個用戶,使用兩個客戶端實現(xiàn)實時通信的過程,如5-11所示:圖5-11實時聊天實現(xiàn)過程具體的程序功能根據(jù)以上的邏輯設(shè)計流程進(jìn)行實施,在開發(fā)過程中使用了Web的API接口WebSocket進(jìn)行實現(xiàn),在前端傳輸信息時,使用了封裝,網(wǎng)頁的具體設(shè)計如下圖5-12所示:圖5-12聊天界面5.2.6推薦結(jié)果計算功能這一模塊是后臺的核心代碼,首先在本機(jī)Windows系統(tǒng)下連接虛擬機(jī)中的Spark集群,接著對數(shù)據(jù)進(jìn)行預(yù)處理,上傳至Hdfs,利用Spark集群讀取文件進(jìn)行計算。由主節(jié)點Master發(fā)送執(zhí)行任務(wù)的命令給集群的Worker,集群分別執(zhí)行命令,通過Executor去創(chuàng)建線程池,利用線程池對任務(wù)進(jìn)行分配,分配到每一個實例化的線程中去進(jìn)行任務(wù)的數(shù)據(jù)計算,利用線程池的并發(fā)執(zhí)行和線程復(fù)用,極大的提高了執(zhí)行效率,降低資源的消耗,內(nèi)部調(diào)度結(jié)構(gòu)圖如下圖5-13所示:圖5-13Spark任務(wù)調(diào)度圖后臺輸入數(shù)據(jù)構(gòu)建模型,編輯輸入輸出路徑邏輯,分配好作業(yè)調(diào)度,進(jìn)行數(shù)據(jù)的具體計算推薦分?jǐn)?shù)矩陣,輸出結(jié)果下載到本地,數(shù)據(jù)傳輸?shù)倪壿媹D如下5-14所示:圖5-14數(shù)據(jù)計算邏輯圖通過構(gòu)建矩陣,進(jìn)行矩陣的計算,本質(zhì)是計算用戶向量在n維空間中的余弦距離,得出相似度推薦分?jǐn)?shù),在計算出分?jǐn)?shù)之后,將推薦矩陣寫入數(shù)據(jù)庫表中,再通過web界面實現(xiàn)可視化,向用戶提供推薦服務(wù),在首頁滾動展示數(shù)據(jù)集。推薦界面如下圖5-15所示:圖5-15推薦結(jié)果展示頁面5.3系統(tǒng)測試軟件測試是一個開發(fā)項目的最后一步,也是檢驗整個開發(fā)項目實現(xiàn)與否的重要手段,使用最簡潔明了的方法,測試功能的完整、流暢,檢測程序運行中的每個步驟。模塊測試,詳情如下表5-1所示:表5-1系統(tǒng)測試測試模塊測試描述前置條件輸入數(shù)據(jù)期望結(jié)果實際結(jié)果登錄模塊用戶正常的進(jìn)行填寫數(shù)據(jù),提交表單進(jìn)行注冊,驗證賬號進(jìn)行登錄。網(wǎng)站能夠正常跳轉(zhuǎn),進(jìn)入首頁,打開注冊登錄界面,點擊注冊/登錄。已注冊普通用戶正確郵箱以及對應(yīng)密碼。用戶正常登錄,并且可以流暢使用平臺其它功能,跳轉(zhuǎn)頁面不需要重新登錄。與預(yù)期結(jié)果一致。電影模塊通過點擊首頁展示電影的鏈接信息,如圖片、名稱等,進(jìn)行詳情頁面查看。Web頁面正常跳轉(zhuǎn),后臺與數(shù)據(jù)庫連接正常。點擊電影詳情連接或者點擊圖片,點擊標(biāo)題。頁面正常跳轉(zhuǎn)進(jìn)入電影的詳細(xì)描述頁面,電影基本信息正常顯示。與預(yù)期結(jié)果一致。推薦模塊用戶在首頁能夠查看個人電影推薦條目。用戶是擁有賬號的普通用戶,在平臺上登錄,有過評分操作,后臺與數(shù)據(jù)庫連接正常,Spark集群正常連接。登錄進(jìn)入首頁之后,查看推薦列表。用戶正常查看個人推薦列表。與預(yù)期結(jié)果一致。搜索模塊用戶在搜索框輸入關(guān)鍵字,使用鍵盤進(jìn)行回車操作,跳轉(zhuǎn)頁面查看結(jié)果集。Web頁面正常跳轉(zhuǎn),后臺與數(shù)據(jù)庫連接正常。輸入關(guān)鍵字,進(jìn)行鍵盤回車操作。用戶能夠正常進(jìn)行電影搜索,查找到想要的電影集。與預(yù)期結(jié)果一致。聊天模塊用戶點擊其它用戶昵稱,選擇聊天操作,跳轉(zhuǎn)進(jìn)入聊天界面,輸入主觀信息,鍵盤操作回車之后發(fā)送,對方用戶接受到信息數(shù)據(jù),并且可以使用同樣的方式回復(fù)信息。Web界面正常跳轉(zhuǎn),用戶使用正確郵箱與密碼進(jìn)行登錄,后臺連接數(shù)據(jù)庫正常。點擊對方用戶昵稱選擇聊天操作,向聊天輸入框輸入正常數(shù)據(jù),鍵盤回車操作。成功發(fā)送聊天內(nèi)容,并且也能夠成功接受對方發(fā)送的信息。與預(yù)期結(jié)果一致。5.4本章小結(jié)本章主要介紹了課題研究的實驗環(huán)境配置,以及闡述了系統(tǒng)具體功能的實現(xiàn)過程,展示了系統(tǒng)的部分畫面設(shè)計,以及實現(xiàn)功能的畫面,對每個核心功能進(jìn)行了詳細(xì)描述,最后對功能模塊進(jìn)行了測試與分析。第六章總結(jié)與展望6.1論文總結(jié)本課題的選題是基于Spark的電影分享社交平臺,設(shè)計為融合推薦系統(tǒng)開發(fā)的社交平臺,在Web網(wǎng)頁設(shè)計的基礎(chǔ)之上加入了比較有特色的推薦服務(wù),作為如今比較熱門的大數(shù)據(jù)功能,所以選擇它成為本課題設(shè)計的核心

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論