![基于Spark集群的電影分享社交平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁](http://file4.renrendoc.com/view/bb89e84db781b5e6fc9150c5ccb63d59/bb89e84db781b5e6fc9150c5ccb63d591.gif)
![基于Spark集群的電影分享社交平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁](http://file4.renrendoc.com/view/bb89e84db781b5e6fc9150c5ccb63d59/bb89e84db781b5e6fc9150c5ccb63d592.gif)
![基于Spark集群的電影分享社交平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁](http://file4.renrendoc.com/view/bb89e84db781b5e6fc9150c5ccb63d59/bb89e84db781b5e6fc9150c5ccb63d593.gif)
![基于Spark集群的電影分享社交平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁](http://file4.renrendoc.com/view/bb89e84db781b5e6fc9150c5ccb63d59/bb89e84db781b5e6fc9150c5ccb63d594.gif)
![基于Spark集群的電影分享社交平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁](http://file4.renrendoc.com/view/bb89e84db781b5e6fc9150c5ccb63d59/bb89e84db781b5e6fc9150c5ccb63d595.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于Spark集群的電影分享社交平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)DesignandImplementationofMovieSharingSocialPlatformsBasedonSpark
摘要本論文主要針對(duì)互聯(lián)網(wǎng)上海量信息對(duì)用戶造成的選擇困擾問題,設(shè)計(jì)并實(shí)現(xiàn)了一款基于Spark集群的電影分享社交平臺(tái),該平臺(tái)使用SpringBoot框架搭建Web平臺(tái),用Spark集群以及協(xié)同過濾算法對(duì)數(shù)據(jù)進(jìn)行計(jì)算,推薦用戶可能喜歡的電影,過濾用戶不需要的垃圾信息,向用戶提供個(gè)性化服務(wù),以及使用Socket技術(shù)實(shí)現(xiàn)在線實(shí)時(shí)聊天,讓用戶體驗(yàn)良好的在線互動(dòng),并且增加了電影評(píng)論的功能,讓用戶在挑選電影觀看之前能夠快速通過電影評(píng)分以及他人評(píng)價(jià),得到電影是否適合自己觀看的合理判斷。解決了用戶選擇困擾的問題,在智能推薦方面與傳統(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ù)量提供快速迭代式計(jì)算的通用內(nèi)存并行計(jì)算框架,雖然發(fā)布的時(shí)間不長,但已成為目前主流集群計(jì)算平臺(tái)之一,可以很好的應(yīng)用于大規(guī)模的數(shù)據(jù)處理程序并且改善高延遲的問題。而另一個(gè)有著重要地位的集群計(jì)算平臺(tái),是開源分布式計(jì)算平臺(tái)Hadoop,Hadoop中的MapReduce對(duì)于Spark的發(fā)展起到了關(guān)鍵性的作用,Spark計(jì)算模塊去其糟粕取其精華,繼承分布式計(jì)算的優(yōu)點(diǎn),在此基礎(chǔ)之上,使用RDD靈活的改善了計(jì)算方式,直接的在內(nèi)存當(dāng)中計(jì)算數(shù)據(jù),并且能夠完成迭代功能。完善了MapReduce只能夠?qū)⒂?jì)算結(jié)果保存到磁盤中的方式,大大的提高了計(jì)算的效率,根據(jù)官方數(shù)據(jù)的統(tǒng)計(jì),在磁盤讀取數(shù)據(jù)的前提之下,Saprk相對(duì)于HadoopMapReduce的計(jì)算速度,能夠提高到10倍以上,在內(nèi)存讀取數(shù)據(jù)的前提之下,甚至可以提高到100倍的速度。其次Spark的一大特色或者說優(yōu)點(diǎn),便是RDD彈性分布式數(shù)據(jù)集[6],Spark將其作為最基本的單位,它們是一些不能更改的只讀集合,彈性數(shù)據(jù)的意思就是,這些數(shù)據(jù)即使丟失了,也仍然可以通過數(shù)據(jù)衍生的過程對(duì)這些集合進(jìn)行重建恢復(fù),所以說彈性,從而保證了Spark的容錯(cuò)性。而RDD的優(yōu)點(diǎn)不止于此,RDD不儲(chǔ)存真實(shí)的數(shù)據(jù),而是利用抽象的數(shù)據(jù)集,儲(chǔ)存索引,利用索引去定位數(shù)據(jù)的真實(shí)儲(chǔ)存,再使用接口的方式去拿到數(shù)據(jù)進(jìn)行計(jì)算處理,利用該特點(diǎn),更多的將數(shù)據(jù)儲(chǔ)存在能夠直接進(jìn)行運(yùn)算的內(nèi)存中,而不去浪費(fèi)硬盤空間,極大的節(jié)省了IO的開銷,內(nèi)存空間耗盡時(shí)才將數(shù)據(jù)放入硬盤。利用RDD的優(yōu)勢,Spark在性能上面遠(yuǎn)遠(yuǎn)的超過Hadoop,本系統(tǒng)使用的是Spark融入Hadoop生態(tài)系統(tǒng)的平臺(tái)進(jìn)行數(shù)據(jù)的計(jì)算。2.1.2SpringBoot框架簡介SpringBoot是目前主流使用的輕量級(jí)Java快速開發(fā)框架,有著非常方便的三大核心優(yōu)勢,一是自動(dòng)配置的功能,封裝好Spring框架中基礎(chǔ)的屬性功能,可以采取注解的方式快速的完成項(xiàng)目配置。二是起步依賴,在開發(fā)開始前幫助引入需要的依賴庫,對(duì)于后續(xù)開發(fā)省去不少的麻煩。三是Actuator,探究底層封裝代碼的邏輯,讓開發(fā)者能夠更加深刻的理解原理。2.1.3WebSocket技術(shù)原理WebSocket[7]作為一個(gè)持久化的協(xié)議,有良好高效的通信能力,解決HTTP的高延遲不同步的問題,只需要一次的請(qǐng)求,獲取持久的連接,節(jié)省資源的消耗,提高性能,是作為實(shí)現(xiàn)實(shí)時(shí)通信功能最優(yōu)選擇的技術(shù)。本課題的社交模塊就是使用該技術(shù)實(shí)現(xiàn)了客戶端進(jìn)行實(shí)時(shí)的聊天,向用戶提供較好的通信體驗(yàn)服務(wù)。2.2推薦系統(tǒng)算法介紹2.2.1協(xié)同過濾推薦算法協(xié)同過濾推薦算法[8](CF,CollaborativeFiltering)根據(jù)用戶瀏覽過的頁面信息,給予較高評(píng)價(jià)的物品以及常常關(guān)注的物品信息,去計(jì)算得到該用戶的行為習(xí)慣、興趣愛好等,從而向用戶推薦用戶可能會(huì)感興趣的物品的算法。獲取原始數(shù)據(jù)之后,對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,得到用戶-物品評(píng)分矩陣,再使用算法進(jìn)行計(jì)算,通過計(jì)算得到當(dāng)前用戶對(duì)其它物品喜好程度的預(yù)測推薦分?jǐn)?shù),依據(jù)這個(gè)分?jǐn)?shù),向用戶推薦分?jǐn)?shù)高的物品,大概率符合用戶的喜好。這種算法能夠很好的應(yīng)用在商業(yè)性的電商軟件平臺(tái)等,提高用戶的點(diǎn)擊率、購買率,從而提高營業(yè)額。由不同的模型和計(jì)算方式,協(xié)同過濾算法基于這兩種不同的模式流程,創(chuàng)建不同的模型,可以分為基于物品的協(xié)同過濾算法(ItemCF)和基于用戶的協(xié)同過濾算法(UserCF)。基于物品的協(xié)同過濾算法,是通過獲取、統(tǒng)計(jì)每一個(gè)用戶對(duì)平臺(tái)內(nèi)選擇過的物品進(jìn)行評(píng)分評(píng)價(jià)操作,表達(dá)對(duì)物品的態(tài)度,通過統(tǒng)計(jì)用戶對(duì)不同物品的喜惡判斷,計(jì)算物品之間的相似程度,再向用戶推薦用戶喜愛物品相似程度分?jǐn)?shù)較高的物品。舉例如下表2-1所示:表2-1基于物品的協(xié)同過濾用戶-物品評(píng)分矩陣User/ItemABCDU1喜歡喜歡U2喜歡喜歡U3喜歡喜歡喜歡通過用戶對(duì)同一個(gè)物品的簡單評(píng)分,發(fā)現(xiàn)得知喜歡A物品的用戶大概率也喜歡C物品,于是將C物品判斷為A物品的相似物品,向喜歡過A物品,并且對(duì)C物品沒有接觸和了解的用戶,推薦C物品,這里利用的是用戶對(duì)物品的某一項(xiàng)特別的優(yōu)點(diǎn)喜好,判斷該優(yōu)點(diǎn)為特定用戶人群的喜好點(diǎn),以此作為依據(jù)去統(tǒng)計(jì)其它擁有此項(xiàng)愛好點(diǎn)的物品,將此類物品歸類評(píng)分,推薦分?jǐn)?shù)較高的物品,以上是基于物品的協(xié)同過濾算法簡單介紹?;谟脩舻膮f(xié)同過濾算法是通過系統(tǒng)獲取的數(shù)據(jù)進(jìn)行初步處理得到簡潔的用戶對(duì)物品的評(píng)分表,分割數(shù)據(jù)換算成矩陣進(jìn)行計(jì)算,統(tǒng)計(jì)得到每一個(gè)用戶的空間向量模型,計(jì)算向量和向量的空間距離,判斷用戶是否為鄰居用戶,再通過計(jì)算得到用戶可能會(huì)喜歡有著相同愛好的用戶評(píng)分較高的物品推薦分?jǐn)?shù),向用戶推薦分?jǐn)?shù)較高的物品。舉例如下表2-2所示:表2-2基于用戶的協(xié)同過濾用戶-物品評(píng)分矩陣User/ItemABCDU1喜歡喜歡喜歡U2喜歡U3喜歡喜歡喜歡由以上的用戶對(duì)物品的簡單喜愛評(píng)價(jià)分析,能夠發(fā)現(xiàn)用戶一號(hào)和用戶三號(hào)對(duì)相同的物品有相同的判斷結(jié)果,可以稱為相鄰鄰居用戶,從而可以把U1未評(píng)價(jià)過的但是U1的相鄰用戶U3喜歡的物品C推薦給U1,反之亦然。2.2.2內(nèi)容推薦算法內(nèi)容推薦算法[9](CB,Content-BasedRecommendations)是基于系統(tǒng)平臺(tái)內(nèi)的物品進(jìn)行屬性分析,特點(diǎn)統(tǒng)計(jì),用戶喜好點(diǎn)發(fā)掘,提煉為物品特征,然后通過用戶的歷史行為記錄,統(tǒng)計(jì)用戶對(duì)特定屬性的估值評(píng)分,計(jì)算用戶偏好,從而匹配有著與用戶偏好相同的物品,進(jìn)行推薦。對(duì)物品內(nèi)容進(jìn)行特征提取又分為兩種方式,第一種是標(biāo)簽化特征,比如電影的類型,就是標(biāo)簽化特征的一種,利用類型可以簡潔明了的提取特征。第二種是高頻詞特征,對(duì)于物品形容的內(nèi)容進(jìn)行高頻詞提取,權(quán)值越大的詞向量表示在內(nèi)容中的地位越是重要,從而統(tǒng)計(jì)權(quán)值較大的高頻詞作為該物品的特征,常見特征提取算法是最近鄰方法(KNN,K-NearestNeighbor)、決策樹算法(DT,DecisionTree)、樸素貝葉斯算法(NB,NaiveBayes)等等,由于本系統(tǒng)未選擇內(nèi)容推薦算法,在此不對(duì)詳細(xì)計(jì)算算法做過多介紹。內(nèi)容推薦算法的優(yōu)勢在于用戶之間擁有獨(dú)立性,不依靠其它用戶的數(shù)據(jù)進(jìn)行計(jì)算。但該算法的缺陷是對(duì)文本需求較高,需要詳細(xì)的對(duì)物品的描述進(jìn)行特征提取,有一定的局限性。舉例如下表2-3所示:表2-3基于內(nèi)容推薦的用戶-物品評(píng)分矩陣User/ItemA(愛情、喜劇)B(驚悚、懸疑)C(搞笑、喜劇)D(愛情、喜劇)U1喜歡U2喜歡喜歡U3喜歡喜歡由以上表格可以看出,物品A與物品D是屬性相似(相同)的物品,可以向喜歡了A物品的用戶推薦D物品,同理也可以向喜歡了D物品的用戶推薦A物品,在此表格中可以向A用戶推薦D物品,這就是基于物品內(nèi)容推薦的簡單模型介紹。2.2.3相似推薦算法相似推薦算法主要是針對(duì)用戶操作行為較少,推薦依據(jù)缺乏的問題,對(duì)用戶有過關(guān)注的某個(gè)物品,找到相似集合,向用戶進(jìn)行推薦,依據(jù)物品的詳細(xì)屬性,作為屬性向量,進(jìn)行物品之間對(duì)比,統(tǒng)計(jì)向量相似權(quán)值之和,獲得物品的相似權(quán)值,將權(quán)值較高的集合向用戶進(jìn)行推薦。但缺點(diǎ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事件也會(huì)發(fā)生,那么A事件與B事件就有著一定的關(guān)聯(lián)規(guī)則,統(tǒng)計(jì)這樣的規(guī)則,需要一定規(guī)模的用戶歷史行為數(shù)據(jù),最名的例子就是“尿布與啤酒”,看似無關(guān)聯(lián)的尿布和啤酒,卻是一起成交率最高的商品,通過分析用戶歷史行為數(shù)據(jù)得到這樣的關(guān)聯(lián)之后,只要把啤酒商品與尿布商品放在一起推薦給客戶,可以同時(shí)的促進(jìn)兩樣商品的售賣,給顧客更好的服務(wù)同時(shí)也促進(jìn)了銷售額。關(guān)聯(lián)規(guī)則推薦算法就是利用這樣的原理,對(duì)用戶進(jìn)行推薦,該算法需要使用到概率論的許多算法,需要進(jìn)行數(shù)據(jù)的挖掘,統(tǒng)計(jì)發(fā)現(xiàn)出事件中的較為經(jīng)常出現(xiàn)的事件集合,根據(jù)權(quán)值的比重進(jìn)一步的推出與之相關(guān)聯(lián)的操作,在計(jì)算關(guān)聯(lián)規(guī)則中常常會(huì)用到的算法是Apriori算法。2.2.5推薦系統(tǒng)評(píng)估指標(biāo)推薦系統(tǒng)離線評(píng)測的重要指標(biāo)就是評(píng)分預(yù)測,一般通過兩種計(jì)算方法,一是均方根誤差(RootMeanSquareError),二是平均絕對(duì)誤差(MeanAbsoluteError)。均方根誤差(RMSE)是指的具體事實(shí)發(fā)生統(tǒng)計(jì)的數(shù)據(jù)值與系統(tǒng)計(jì)算得出的結(jié)果值之間的差異的樣本標(biāo)準(zhǔn)差,具體的公式如下2-1:RMSEX,?=1m平均絕對(duì)誤差(MAE)指的是系統(tǒng)計(jì)算得出的結(jié)果值與具體事實(shí)發(fā)生統(tǒng)計(jì)的數(shù)據(jù)值之間的絕對(duì)誤差的平均值,具體公式如下2-2:MAEX,?=1mi=1m?2.3相似度計(jì)算公式2.3.1歐幾里得距離歐幾里得距離也稱歐式距離(EuclideanDistance),這里可以引出另外一個(gè)概念,就是歐幾里得空間,能夠觀測到的任何物品,若是想要對(duì)它們進(jìn)行計(jì)算,對(duì)抽象概念束手無策時(shí),可以將它們放入一個(gè)n維的歐幾里得空間,使用向量的方式對(duì)這樣的物體進(jìn)行觀測統(tǒng)計(jì),甚至是計(jì)算,那么當(dāng)計(jì)算兩個(gè)向量之間的距離時(shí),此時(shí)用到的便是歐幾里得距離,在推薦領(lǐng)域中,可以認(rèn)為這兩個(gè)抽象概念上的物體它們?cè)谕粋€(gè)向量空間的空間距離越是相近,就代表這兩樣物體很是相似,由此可以統(tǒng)計(jì)相似項(xiàng)集,不同的維度不同的空間,使用的計(jì)算公式也隨之變化,距離公式具體如下面的公式2-3:dx,y=x12.3.2曼哈頓距離曼哈頓距離(ManhattanDistance),這里可以簡單的認(rèn)為是高中知識(shí)中路程與位移二者之間的路程計(jì)算公式,位移為起始點(diǎn)至終點(diǎn)兩點(diǎn)一線的直線距離,但在實(shí)際生活當(dāng)中需要用到的往往是實(shí)際的路程距離,曼哈段距離便是這個(gè)實(shí)際的路程距離,推薦算法中使用的也是此實(shí)際路程距離,計(jì)算該距離的具體公式如下2-4:dx,y=i=1n2.3.3余弦相似度余弦相似度,在初始數(shù)據(jù)用戶-評(píng)分矩陣中,通過不同數(shù)據(jù)的統(tǒng)計(jì)分析,去構(gòu)建一個(gè)在數(shù)學(xué)領(lǐng)域中可以計(jì)算的向量,來代表此用戶,進(jìn)行數(shù)學(xué)計(jì)算,通過提供的不同數(shù)據(jù),去創(chuàng)造不同的維度空間,用來容納每一個(gè)用戶向量,而這里的余弦相似度就是計(jì)算這個(gè)抽象特定的空間內(nèi)向量之間的空間距離,具體計(jì)算使用向量之間的余弦值表示,依此評(píng)判兩個(gè)用戶之間的相似程度,余弦值的取值范圍在0~1之間,距離和余弦值的大小成反比關(guān)系,相似程度與余弦值大小成正比關(guān)系。具體的公式如下2-5:simu,v=cosu2.4本章小結(jié)本章介紹了課題有關(guān)的相關(guān)技術(shù),在較為出色的一些算法之中做了比較,選擇最適合本課題研究的基于物品的協(xié)同過濾算法作為本課題的核心計(jì)算算法,此外還介紹了在數(shù)據(jù)處理過程中會(huì)使用到的一些算法,做數(shù)據(jù)的預(yù)處理,方便模型的搭建,討論了本課題基礎(chǔ)框架技術(shù),合理的利用框架的便利去實(shí)現(xiàn)課題研究。第三章離線推薦系統(tǒng)設(shè)計(jì)3.1集群搭建設(shè)計(jì)本課題研究選擇搭建完全分布式集群,由于資源有限,本系統(tǒng)使用了Vmware虛擬機(jī)實(shí)現(xiàn)完全分布式的集群搭建,本系統(tǒng)的集群設(shè)計(jì)如圖3-1所示:圖3-1Spark集群搭建系統(tǒng)設(shè)計(jì)Hadoop集群搭建完畢如圖3-2和3-3所示:圖3-2Hadoop集群搭建成功效果圖1圖3-3Hadoop集群搭建成功效果圖2Spark集群搭建完畢如圖3-4所示:圖3-4Spark集群搭建成功效果圖3.2推薦算法計(jì)算步驟3.2.1樣本處理離線系統(tǒng)需要對(duì)數(shù)據(jù)進(jìn)行計(jì)算,這里輸入的數(shù)據(jù)是用戶-物品的評(píng)分?jǐn)?shù)據(jù),樣本處理的這個(gè)步驟就是我們從數(shù)據(jù)庫的數(shù)據(jù)當(dāng)中去提取用戶-物品的評(píng)分?jǐn)?shù)據(jù),編寫Java程序連接數(shù)據(jù)庫,讀取數(shù)據(jù)庫表中用戶id、電影id、評(píng)分屬性,放入Map中儲(chǔ)存,創(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)計(jì)分組,統(tǒng)計(jì)被用戶選擇、偏好過的物品,建立物品的同現(xiàn)矩陣,物品之間兩個(gè)兩個(gè)進(jìn)行匹配統(tǒng)計(jì),同時(shí)被選擇的次數(shù),這就是物品同現(xiàn)矩陣,用簡單的例子表示如下表3-1所示:表3-1用戶-電影評(píng)分表UserMovieScore1A5.01B5.01C3.01D4.02A3.02D5.03A4.03C5.03D5.0物品同現(xiàn)矩陣如下圖3-2所示:表3-2物品同現(xiàn)矩陣
ABCDA3123B1111C2122D3123評(píng)分矩陣表示說明如下表3-3所示:表3-3物品同現(xiàn)矩陣2A3.0B0.0C0.0D5.0最后使用用戶-物品評(píng)分矩陣與物品同現(xiàn)矩陣相乘,便能夠得到最終的推薦分?jǐn)?shù)如下圖3-6所示:圖3-6推薦分?jǐn)?shù)計(jì)算3.3基于物品的協(xié)同過濾算法原理基于物品的協(xié)同過濾算法底層的邏輯,其實(shí)是去判斷兩樣物品在用戶心中的喜好分?jǐn)?shù)比值高低,實(shí)際上物品是抽象的不可計(jì)算的,但是數(shù)學(xué)使之變?yōu)橄蛄浚m然這個(gè)過程中無法保證建立的物品模型與現(xiàn)實(shí)中完全一致,但在可完成范圍內(nèi),盡可能地通過合理性去判斷統(tǒng)計(jì)物品的各種屬性,在理論上得到模型相似的結(jié)果,并且在實(shí)踐中統(tǒng)計(jì)計(jì)算方式的準(zhǔn)確性與合理性,可以用兩種方式去理解,下面采取直觀的圖表法解釋如何使用用戶-物品的評(píng)分表,計(jì)算物品之間的相似度,首先隨意例舉了一個(gè)用戶-物品評(píng)分表如下表3-4所示:表3-4原理舉例評(píng)分User1User2A5.04.0B4.55.0C3.55.0D2.03.0E1.52.5接下來利用散點(diǎn)圖表示物品的相似度如下圖3-7所示:圖3-7物品相似度散點(diǎn)圖可以很好的從散點(diǎn)圖看出,物品D和物品E的距離相近,物品A與物品B的距離相近,這里的距離便是這兩個(gè)物品之間在某一個(gè)維度下的距離,在此稱為相似度,即可判斷為物品D和物品E為相似物品,可以向喜愛D物品的用戶推薦E物品,物品A與物品B也是同理,使用歐幾里得距離算法可以計(jì)算得出每項(xiàng)物品之間的相似度,從而得到推薦分?jǐn)?shù)。第二種方式,可以理解每一項(xiàng)物品都為一個(gè)n維空間的向量,這里的n維表示物品帶有的屬性,屬性越多的物品,評(píng)判的維度越多,那么物品的形象也會(huì)更加的豐富,計(jì)算推薦的結(jié)果準(zhǔn)確度也隨之上升,采取計(jì)算余弦相似度的計(jì)算公式,得到推薦分?jǐn)?shù)。3.4本章小結(jié)本章主要介紹了系統(tǒng)搭建的集群設(shè)計(jì),以及搭建的過程,詳細(xì)的講解了推薦系統(tǒng)計(jì)算的步驟,使用圖文的方式簡潔明了的展示了數(shù)據(jù)的變化,以及算法原理的解析,相似度的本質(zhì)原理。第四章Web社交平臺(tái)設(shè)計(jì)4.1系統(tǒng)總框架本系統(tǒng)主要分為兩個(gè)核心模塊,離線計(jì)算推薦系統(tǒng)和Web網(wǎng)頁社交系統(tǒng),以及四個(gè)不同的層次,數(shù)據(jù)層、計(jì)算層、結(jié)果層和表示層,不同的模塊提供不同的服務(wù),每個(gè)層次都有對(duì)應(yīng)的工作職責(zé),有條理的傳輸數(shù)據(jù),具體的系統(tǒng)架構(gòu)如下圖4-1所示:圖4-1系統(tǒng)架構(gòu)圖4.2系統(tǒng)程序設(shè)計(jì)4.2.1功能設(shè)計(jì)本系統(tǒng)的WEB設(shè)計(jì)的功能如下:(1)用戶模塊:用戶進(jìn)入網(wǎng)站可以注冊(cè)擁有自己的賬戶,登錄賬號(hào),可以編輯自己的個(gè)人信息,換頭像、寫個(gè)人簡介,與其它用戶成為好友,也可以登出賬號(hào)。(2)首頁模塊:沒有注冊(cè)賬號(hào)的用戶仍然可以在首頁查看熱門的電影、使用查詢模塊、博客模塊,正常注冊(cè)登錄了的用戶可以使用更多的用戶模塊、評(píng)分模塊和專屬的推薦模塊。(3)查詢模塊:用戶可以在搜索框輸入關(guān)鍵詞,進(jìn)行全局搜索自己想要找到的電影信息,還有高級(jí)篩選搜索,選擇年份、地區(qū)、類型等等,進(jìn)行高級(jí)篩選出匹配條件的電影。(4)評(píng)分模塊:用戶選擇看過的電影,可以對(duì)電影進(jìn)行評(píng)分與發(fā)表感想,對(duì)電影進(jìn)行一個(gè)主觀的評(píng)價(jià),同時(shí)也可以選擇沒有看過的電影,查看其他人的主觀評(píng)價(jià),從而對(duì)電影進(jìn)行一定的判斷。(5)推薦模塊:用戶通過使用本系統(tǒng),在對(duì)電影進(jìn)行評(píng)分過后,系統(tǒng)收集用戶行為記錄,對(duì)不同的用戶進(jìn)行個(gè)性化的推薦電影,每個(gè)用戶都有專屬的推薦模塊。(6)詳情模塊:用戶可以點(diǎn)擊電影圖片、名字等等,查看該電影的詳細(xì)信息介紹,包括了演員表、導(dǎo)演、地區(qū)、上映年月份、總體評(píng)分、劇情梗概等等,也包括博客模塊,有發(fā)布日期、大圖展示、全文展示等等。(7)博客模塊:用戶可以在本平臺(tái)上發(fā)布博客,插入圖片,查看他人的博客,發(fā)表評(píng)論等操作。(8)聊天模塊:用戶在本平臺(tái)上遇見感興趣的影評(píng),想與有著相同見解的用戶進(jìn)行探討時(shí),除了可以在評(píng)論下發(fā)布回復(fù),還可以與用戶進(jìn)行聊天對(duì)話。具體的詳情介紹如下圖4-2所示:圖4-2系統(tǒng)功能架構(gòu)圖4.2.1數(shù)據(jù)庫設(shè)計(jì)本課題選擇使用MySql數(shù)據(jù)庫技術(shù)作為數(shù)據(jù)支撐,按照系統(tǒng)的數(shù)據(jù)邏輯,分別設(shè)計(jì)了如下的數(shù)據(jù)庫表,具體結(jié)構(gòu)如下圖4-3所示:圖4-3數(shù)據(jù)庫總體架構(gòu)圖(1)User表,主要存儲(chǔ)用戶的個(gè)人信息,性別、名字、郵箱、密碼、手機(jī)號(hào)等等的基本屬性。如下表4-1所示:表4-1用戶表名類型注釋idbigint用戶唯一id(主鍵)usernamevarchar用戶昵稱passwordvarchar賬號(hào)密碼emailvarchar郵箱(賬號(hào))mobilevarchar手機(jī)號(hào)sexvarchar性別imageurlvarchar頭像圖片地址aboutvarchar個(gè)人介紹(2)Movies表,主要儲(chǔ)存電影的基本信息,電影名稱、圖片地址、劇情簡介、導(dǎo)演、演員、時(shí)長、類型等等。熱門電影與最新電影主要字段與電影表屬性基本一致,在此只例舉電影表結(jié)構(gòu),具體如下表4-2所示:表4-2電影表名類型注釋idint電影的唯一id(主鍵)namevarchar電影名稱directorvarchar導(dǎo)演信息actortext演員信息scoredecimal電影總體評(píng)分datelinevarchar上映年份cityvarchar電影制作國家themetext電影劇情梗概countbigint影評(píng)數(shù)量imageurltext電影海報(bào)地址numberbigint電影評(píng)價(jià)數(shù)量typevarchar電影類型writertext電影編劇languagevarchar語言timevarchar電影上線時(shí)間imburltext線上播放地址(3)Comment表,主要儲(chǔ)存的是用戶對(duì)電影的影評(píng)以及打分分?jǐn)?shù),博客的評(píng)論表與此表類似,屬性大致相同,在此只例舉影評(píng)表,具體如下表4-3所示:表4-3影評(píng)表名類型注釋idbigint影評(píng)的唯一標(biāo)識(shí)(主鍵)movies_idint電影iduser_idint用戶iduser_namevarchar用戶昵稱scoredecimal用戶打分(一位小數(shù)點(diǎn))dayvarchar評(píng)論日期時(shí)間reply_countint回復(fù)數(shù)量contentvarchar影評(píng)內(nèi)容(4)Blog表,主要是儲(chǔ)存用戶博客內(nèi)容,具體結(jié)構(gòu)如下表4-4所示:表4-4博客表名類型注釋idbigint博客的唯一標(biāo)識(shí)(主鍵)user_idbigint發(fā)表用戶iduser_namevarchar發(fā)表用戶昵稱titlevarchar博客標(biāo)題contenttext博客內(nèi)容dayvarchar發(fā)表日期時(shí)間imageurlvarchar博文圖片reply_countint評(píng)論數(shù)量(5)Friend表,此表主要儲(chǔ)存與用戶建立會(huì)話的關(guān)系列表,具體結(jié)構(gòu)如下表4-5所示:表4-5好友列表名類型注釋idbigint好友關(guān)系唯一標(biāo)識(shí)(主鍵)user_idbigint用戶iduser_namevarchar用戶昵稱f_idbigint好友idf_namevarchar好友昵稱f_imagevarchar好友頭像(6)Record表,主要儲(chǔ)存的是好友之間的聊天記錄,具體結(jié)構(gòu)如下表4-6所示:表4-6聊天記錄列表名類型注釋idbigint聊天記錄唯一標(biāo)識(shí)(主鍵)user_idbigint用戶iduser_namevarchar用戶昵稱f_idbigint好友idf_namevarchar好友昵稱messagetext聊天內(nèi)容timevarchar發(fā)送時(shí)間meint是否自己發(fā)出4.3本章小結(jié)本章主要介紹了系統(tǒng)的總體架構(gòu)設(shè)計(jì),詳細(xì)的描述了系統(tǒng)功能設(shè)計(jì),每個(gè)模塊的職責(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)。第五章具體功能實(shí)現(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ā)平臺(tái):IntelliJIDEA2018.2.4數(shù)據(jù)庫:MySQL5.6.5開發(fā)框架:SpringBoot(2)Linux(三臺(tái)虛擬機(jī))操作系統(tǒng):CentOS7內(nèi)存:2.0GBJAVA:jdk-1.7Hadoop版本:Hadoop-2.7.3Spark版本:Spark-系統(tǒng)功能實(shí)現(xiàn)5.2.1用戶模塊功能登錄與注冊(cè)是交互平臺(tái)中最基礎(chǔ)的功能,做基本信息提示輸入,用戶只需要按照提示填入相關(guān)關(guān)鍵數(shù)據(jù),前端會(huì)對(duì)每一個(gè)屬性格式進(jìn)行規(guī)范檢查,設(shè)置賬號(hào)和密碼,使用MD5進(jìn)行密碼加密,存入數(shù)據(jù)庫,將標(biāo)識(shí)的關(guān)鍵字段,也可稱為主鍵,設(shè)置為自增格式,以此作為用戶賬號(hào)的DNA,在登錄的時(shí)候,校驗(yàn)賬號(hào)與密碼的正確性,校驗(yàn)成功后,取出用戶對(duì)象,存入session會(huì)話中,由此完成了用戶賬號(hào)的存入,即是注冊(cè),以及對(duì)象持久化的登錄功能。界面設(shè)計(jì)如圖5-1所示:圖5-1登錄界面5.2.2首頁模塊功能首頁主要是展示了不同的電影列表,有熱門電影列表、最新電影列表、精選電影列表、推薦電影列表,只有登錄了賬號(hào)的用戶才能夠顯示推薦電影列表,這個(gè)模塊需要針對(duì)用戶生成用戶專屬的推薦模塊,未登錄的情況下不予展示。實(shí)現(xiàn)的原理是利用Spring框架進(jìn)行頁面的跳轉(zhuǎn)、數(shù)據(jù)的傳輸、數(shù)據(jù)庫操作等等,主要的流程圖如下圖5-2所示:圖5-2頁面跳轉(zhuǎn)業(yè)務(wù)流程首頁還包含了其它的小模塊鏈接,所有電影的列表的展示鏈接、博客展示鏈接、高級(jí)篩選功能、查詢功能、個(gè)人中心等。首頁展示如下圖5-3所示:圖5-3首頁部分展示5.2.3詳情模塊功能該模塊包括了電影的詳情界面、博客詳情界面、評(píng)論區(qū)實(shí)現(xiàn)翻頁展示的功能,發(fā)表評(píng)論的功能。具體頁面如下圖5-4、5-5所示:圖5-4電影詳情頁面部分展示圖5-5博客詳情頁面部分展示5.2.4搜索模塊功能用戶需要提供一個(gè)相關(guān)的“引子”作為關(guān)鍵字,在數(shù)據(jù)庫中對(duì)這個(gè)關(guān)鍵字進(jìn)行模糊的比較查詢,顯示符合條件的電影列表,包括高級(jí)篩選,也是搜索模塊中的功能,根據(jù)類型、年份、地區(qū)進(jìn)行模糊搜索,搜索無結(jié)果時(shí),給用戶無結(jié)果的提示。具體的流程邏輯圖如下圖5-6所示:圖5-6搜索功能邏輯流程圖具體頁面設(shè)計(jì)如下圖5-7、5-8、5-9所示:圖5-7搜索關(guān)鍵字無結(jié)果返回顯示頁面圖5-8高級(jí)篩選選項(xiàng)卡圖5-9搜索結(jié)果返回頁面5.2.5聊天模塊功能本模塊使用的核心技術(shù)主要是WebSocket技術(shù),代替以往使用輪詢的老舊方式進(jìn)行實(shí)時(shí)的通信,在這里先來看一下簡單Socket模型如下圖5-10所示:圖5-10Socket簡單模型在這里只需要使用HTTP協(xié)議進(jìn)行客戶端與服務(wù)端之間的一次交互握手,建立一條全雙工的通信通道,單獨(dú)被WebSocket使用傳輸信息,簡單快捷,并且節(jié)省資源,性能較高,是作為實(shí)時(shí)通信聊天功能的最佳選擇。下面來看具體的兩個(gè)用戶,使用兩個(gè)客戶端實(shí)現(xiàn)實(shí)時(shí)通信的過程,如5-11所示:圖5-11實(shí)時(shí)聊天實(shí)現(xiàn)過程具體的程序功能根據(jù)以上的邏輯設(shè)計(jì)流程進(jìn)行實(shí)施,在開發(fā)過程中使用了Web的API接口WebSocket進(jìn)行實(shí)現(xiàn),在前端傳輸信息時(shí),使用了封裝,網(wǎng)頁的具體設(shè)計(jì)如下圖5-12所示:圖5-12聊天界面5.2.6推薦結(jié)果計(jì)算功能這一模塊是后臺(tái)的核心代碼,首先在本機(jī)Windows系統(tǒng)下連接虛擬機(jī)中的Spark集群,接著對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,上傳至Hdfs,利用Spark集群讀取文件進(jìn)行計(jì)算。由主節(jié)點(diǎn)Master發(fā)送執(zhí)行任務(wù)的命令給集群的Worker,集群分別執(zhí)行命令,通過Executor去創(chuàng)建線程池,利用線程池對(duì)任務(wù)進(jìn)行分配,分配到每一個(gè)實(shí)例化的線程中去進(jìn)行任務(wù)的數(shù)據(jù)計(jì)算,利用線程池的并發(fā)執(zhí)行和線程復(fù)用,極大的提高了執(zhí)行效率,降低資源的消耗,內(nèi)部調(diào)度結(jié)構(gòu)圖如下圖5-13所示:圖5-13Spark任務(wù)調(diào)度圖后臺(tái)輸入數(shù)據(jù)構(gòu)建模型,編輯輸入輸出路徑邏輯,分配好作業(yè)調(diào)度,進(jìn)行數(shù)據(jù)的具體計(jì)算推薦分?jǐn)?shù)矩陣,輸出結(jié)果下載到本地,數(shù)據(jù)傳輸?shù)倪壿媹D如下5-14所示:圖5-14數(shù)據(jù)計(jì)算邏輯圖通過構(gòu)建矩陣,進(jìn)行矩陣的計(jì)算,本質(zhì)是計(jì)算用戶向量在n維空間中的余弦距離,得出相似度推薦分?jǐn)?shù),在計(jì)算出分?jǐn)?shù)之后,將推薦矩陣寫入數(shù)據(jù)庫表中,再通過web界面實(shí)現(xiàn)可視化,向用戶提供推薦服務(wù),在首頁滾動(dòng)展示數(shù)據(jù)集。推薦界面如下圖5-15所示:圖5-15推薦結(jié)果展示頁面5.3系統(tǒng)測試軟件測試是一個(gè)開發(fā)項(xiàng)目的最后一步,也是檢驗(yàn)整個(gè)開發(fā)項(xiàng)目實(shí)現(xiàn)與否的重要手段,使用最簡潔明了的方法,測試功能的完整、流暢,檢測程序運(yùn)行中的每個(gè)步驟。模塊測試,詳情如下表5-1所示:表5-1系統(tǒng)測試測試模塊測試描述前置條件輸入數(shù)據(jù)期望結(jié)果實(shí)際結(jié)果登錄模塊用戶正常的進(jìn)行填寫數(shù)據(jù),提交表單進(jìn)行注冊(cè),驗(yàn)證賬號(hào)進(jìn)行登錄。網(wǎng)站能夠正常跳轉(zhuǎn),進(jìn)入首頁,打開注冊(cè)登錄界面,點(diǎn)擊注冊(cè)/登錄。已注冊(cè)普通用戶正確郵箱以及對(duì)應(yīng)密碼。用戶正常登錄,并且可以流暢使用平臺(tái)其它功能,跳轉(zhuǎn)頁面不需要重新登錄。與預(yù)期結(jié)果一致。電影模塊通過點(diǎn)擊首頁展示電影的鏈接信息,如圖片、名稱等,進(jìn)行詳情頁面查看。Web頁面正常跳轉(zhuǎn),后臺(tái)與數(shù)據(jù)庫連接正常。點(diǎn)擊電影詳情連接或者點(diǎn)擊圖片,點(diǎn)擊標(biāo)題。頁面正常跳轉(zhuǎn)進(jìn)入電影的詳細(xì)描述頁面,電影基本信息正常顯示。與預(yù)期結(jié)果一致。推薦模塊用戶在首頁能夠查看個(gè)人電影推薦條目。用戶是擁有賬號(hào)的普通用戶,在平臺(tái)上登錄,有過評(píng)分操作,后臺(tái)與數(shù)據(jù)庫連接正常,Spark集群正常連接。登錄進(jìn)入首頁之后,查看推薦列表。用戶正常查看個(gè)人推薦列表。與預(yù)期結(jié)果一致。搜索模塊用戶在搜索框輸入關(guān)鍵字,使用鍵盤進(jìn)行回車操作,跳轉(zhuǎn)頁面查看結(jié)果集。Web頁面正常跳轉(zhuǎn),后臺(tái)與數(shù)據(jù)庫連接正常。輸入關(guān)鍵字,進(jìn)行鍵盤回車操作。用戶能夠正常進(jìn)行電影搜索,查找到想要的電影集。與預(yù)期結(jié)果一致。聊天模塊用戶點(diǎn)擊其它用戶昵稱,選擇聊天操作,跳轉(zhuǎn)進(jìn)入聊天界面,輸入主觀信息,鍵盤操作回車之后發(fā)送,對(duì)方用戶接受到信息數(shù)據(jù),并且可以使用同樣的方式回復(fù)信息。Web界面正常跳轉(zhuǎn),用戶使用正確郵箱與密碼進(jìn)行登錄,后臺(tái)連接數(shù)據(jù)庫正常。點(diǎn)擊對(duì)方用戶昵稱選擇聊天操作,向聊天輸入框輸入正常數(shù)據(jù),鍵盤回車操作。成功發(fā)送聊天內(nèi)容,并且也能夠成功接受對(duì)方發(fā)送的信息。與預(yù)期結(jié)果一致。5.4本章小結(jié)本章主要介紹了課題研究的實(shí)驗(yàn)環(huán)境配置,以及闡述了系統(tǒng)具體功能的實(shí)現(xiàn)過程,展示了系統(tǒng)的部分畫面設(shè)計(jì),以及實(shí)現(xiàn)功能的畫面,對(duì)每個(gè)核心功能進(jìn)行了詳細(xì)描述,最后對(duì)功能模塊進(jìn)行了測試與分析。第六章總結(jié)與展望6.1論文總結(jié)本課題的選題是基于Spark的電影分享社交平臺(tái),設(shè)計(jì)為融合推薦系統(tǒng)開發(fā)的社交平臺(tái),在Web網(wǎng)頁設(shè)計(jì)的基礎(chǔ)之上加入了比較有特色的推薦服務(wù),作為如今比較熱門的大數(shù)據(jù)功能,所以選擇它成為本課題設(shè)計(jì)的核心
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年可調(diào)控輥型四輥液壓軋機(jī)合作協(xié)議書
- 2022-2023學(xué)年廣西玉林市容縣四年級(jí)(上)期末數(shù)學(xué)試卷
- 新譯林六年級(jí)英語上冊(cè)教案(全冊(cè))
- 2025年臨時(shí)工協(xié)議常用版(2篇)
- 2025年二手?jǐn)?shù)控機(jī)床買賣合同(2篇)
- 2025年五年級(jí)下冊(cè)語文教學(xué)工作總結(jié)樣本(3篇)
- 2025年人事代理員工勞動(dòng)合同常用版(4篇)
- 2025年倉儲(chǔ)運(yùn)輸合同標(biāo)準(zhǔn)版本(4篇)
- 2025年互聯(lián)網(wǎng)技術(shù)服務(wù)合同樣本(三篇)
- 專題01 集合、邏輯用語與復(fù)數(shù)(解析版)
- 2024年公務(wù)員考試題庫附答案【完整版】
- 關(guān)于闖紅燈的調(diào)查報(bào)告
- T-GDWCA 0019-2018 輻照工藝操作規(guī)范
- 決策與博弈論課件
- 為什么偉大不能被計(jì)劃
- 精神障礙患者的社交技巧訓(xùn)練
- 司機(jī)考核管理制度
- 重慶八中2024屆高三12月高考適應(yīng)性月考卷(四) 語文試卷(含答案)
- 出差報(bào)銷單-中英對(duì)照版
- 電流互感器試驗(yàn)報(bào)告
- 蔣中一動(dòng)態(tài)最優(yōu)化基礎(chǔ)
評(píng)論
0/150
提交評(píng)論