韓冬 郭浩峰 李林洋 汪菊琴 江森林
摘要:現(xiàn)今有大量的找房和招聘系統(tǒng),但缺少為找房和就業(yè)提供綜合性數(shù)據(jù)關聯(lián)分析參考的相關系統(tǒng)。該系統(tǒng)通過大數(shù)據(jù)技術獲取相關信息,通過MapReduce關鍵技術對數(shù)據(jù)進行清洗、計算,結合ECharts展示數(shù)據(jù)并分析,在移動端設備將各地區(qū)的房價、房租、工資等信息用不同類型的方式分析并展示它們之間的關系。
關鍵詞:大數(shù)據(jù)技術;MapReduce;ECharts;移動端
中圖分類號:TP311 ? ? ?文獻標識碼:A
文章編號:1009-3044(2020)25-0089-03
Abstract: Nowadays, there are a large number of housing search and recruitment systems, but there is a lack of relevant systems to provide comprehensive data association analysis reference for housing search and employment. The system obtains relevant information through big data technology, cleans and calculates the data through MapReduce key technology, displays and analyzes the data combined with echards, and analyzes the relationship between house prices, rents, wages and other information of various regions in different types of ways on mobile devices.
Key words: big data technology; MapReduce; ECharts; mobile devices
1 背景
現(xiàn)今,大部分的買房租房平臺或就業(yè)系統(tǒng)基本只提供具體信息,這些房價房租數(shù)據(jù)都不能為用戶提供真正的實際意義,用戶也不能通過這些瑣碎的數(shù)據(jù)來為自己的買房租房做出計劃。人們就會在區(qū)域內(nèi)找房并就業(yè)存在一定的茫然,尤其是對于應屆畢業(yè)生而言這種情況更為嚴重。如今我們社會的信息產(chǎn)業(yè)正逐步趨向于云計算、大數(shù)據(jù)時代,為了方便他們參考房價及就業(yè)信息,因此設計了一個適配于移動端的區(qū)域房價與就業(yè)數(shù)據(jù)關聯(lián)分析系統(tǒng)。本系統(tǒng)通過數(shù)據(jù)關聯(lián)分析并結合圖表展示的方式,將各地區(qū)的房價、房租、工資信息用不同類型的方式分析并展示它們之間的關系。
2 系統(tǒng)的設計
本系統(tǒng)的開發(fā)主要分為三期,一是對數(shù)據(jù)的獲取,主要是通過各種房價網(wǎng)站、住房網(wǎng)站、招聘網(wǎng)站進行定時的數(shù)據(jù)爬取。二是數(shù)據(jù)的清洗以及分析,主要利用Hadoop架構的MapReduce技術,對數(shù)據(jù)的關聯(lián)性分析主要采用ECharts工具。三是移動端應用程序的實現(xiàn),主要通過VUE框架結合使用Echarts圖表和高德地圖進行圖形展示和數(shù)據(jù)顯示。系統(tǒng)總體框架如圖1所示:
2.1 數(shù)據(jù)爬取方案
Python在爬蟲領域的應用非常廣泛,由于它自己的特點,在各大平臺可移植性強,使用python開發(fā)的應用程序質(zhì)量更加可靠,有大量的內(nèi)置包能夠幫助開發(fā)者實現(xiàn)復雜的功能需求。本系統(tǒng)借助python開發(fā)的優(yōu)點,使用爬蟲中常用的urllib庫,webdriver庫,scrapy框架等的基礎上構建了部署在docker容器上的數(shù)據(jù)采集子系統(tǒng)方案。
2.2 數(shù)據(jù)清洗與分析子系統(tǒng)方案
首先需要實現(xiàn)Hadoop HA分布式系統(tǒng)的搭建,在此架構上才可通過MapReduce技術實現(xiàn)數(shù)據(jù)的清洗以及計算。在數(shù)據(jù)清洗過程中,需要重新審查相關數(shù)據(jù)是否有重復、缺失以及無效值等情況,因為本系統(tǒng)的源數(shù)據(jù)是通過數(shù)據(jù)爬取子系統(tǒng)獲取的,在設計數(shù)據(jù)爬取子系統(tǒng)時就考慮到了上述數(shù)據(jù)的異常情況,所以數(shù)據(jù)庫中異常數(shù)據(jù)的數(shù)量較少,因此在數(shù)據(jù)清洗中可選擇剔除異常數(shù)據(jù)。因為ECharts工具可視化數(shù)據(jù)的效果較好,因此選擇該工具并對其數(shù)據(jù)進行關聯(lián)性分析。
2.3 移動端應用程序子系統(tǒng)方案
本系統(tǒng)通過開發(fā)適配移動端的Html5 App進行分析數(shù)據(jù)的應用展示。功能模塊如圖2所示。
2.3.1 基于Echarts的移動端App
首先要對地區(qū)地圖進行繪制和展示。服務器通過數(shù)據(jù)庫將已經(jīng)分析好的數(shù)據(jù)進行區(qū)域性的檢索和劃分,通過JSON數(shù)據(jù)的格式返回給客戶端,客戶端將數(shù)據(jù)接收,通過ECharts配置項的數(shù)據(jù)設置將區(qū)域和數(shù)據(jù)繪制出來。通過搜索框的自動提示定位到不同區(qū)域或者選擇的區(qū)域發(fā)生改變時,就可以通過區(qū)域編碼發(fā)送給服務器,服務器接收并檢索對應的數(shù)據(jù)并響應給客戶端。
2.3.2 基于JWT驗證技術的移動端App
通過用戶端登錄發(fā)送的信息進行密鑰加密,產(chǎn)生對應Token值后返回給客戶端,客戶端接收存儲Token,在每次與服務器的交互時攜帶Token,服務器印證之后返回數(shù)據(jù)。
3 系統(tǒng)的實現(xiàn)
3.1 爬取數(shù)據(jù)子系統(tǒng)的實現(xiàn)
3.1.1 環(huán)境搭建
配置阿里云鏡像拉取源;安裝docker運行依賴;安裝docker環(huán)境。
3.1.2 數(shù)據(jù)爬取程序以及部署
指定唯一的項目名稱;設置爬取的域名范圍;解析并下載數(shù)據(jù);初始化瀏覽器,調(diào)用相關接口進行操控;獲得網(wǎng)頁源代碼后解析并存儲數(shù)據(jù);將程序拷貝到linux平臺生產(chǎn)環(huán)境,構建并啟動鏡像。
3.2 數(shù)據(jù)清洗與分析子系統(tǒng)的實現(xiàn)
3.2.1 Hadoop HA分布式系統(tǒng)的搭建
對各節(jié)點進行網(wǎng)絡配置;在主節(jié)點中安裝并配置SSH、Hadoop、Zookeeper、Java環(huán)境、Eclipse、MySQL等;生成主節(jié)點的SSH公鑰,將其傳輸分節(jié)點并對其授權;將主節(jié)點中安裝的內(nèi)容傳輸至分節(jié)點中;在主節(jié)點處啟動Hadoop。
3.2.2 數(shù)據(jù)清洗、計算以及分析
數(shù)據(jù)庫連接;剔除房價與就業(yè)數(shù)據(jù)的重復值、缺失值、無效值;統(tǒng)一數(shù)據(jù)格式;分區(qū)域計算房價、薪資的平均值以及價格區(qū)間的數(shù)量;將清洗以及計算后的數(shù)據(jù)臨時存儲至Hive倉庫;通過Sqoop工具將Hive倉庫的數(shù)據(jù)導入至MySQL關系數(shù)據(jù)庫中;通過ECharts工具可視化清洗及計算后的房價與就業(yè)數(shù)據(jù);對清洗及計算后的房價與就業(yè)數(shù)據(jù)進行關聯(lián)性分析。
3.3 移動端應用程序子系統(tǒng)的實現(xiàn)
3.3.1 模塊的設計
該子系統(tǒng)共有八個模塊,分別為:網(wǎng)絡請求模塊 http.js;路由守衛(wèi)模塊 premit.js;地圖加載模塊 loadMap.js;狀態(tài)管理模塊 store.js;地圖配置模塊 mapConfig.js;JWT配置模塊 jwt.js;數(shù)據(jù)庫配置模塊 dbConfig.js;數(shù)據(jù)庫連接模塊 db.js。
3.3.2 移動端應用程序子系統(tǒng)功能
1)登錄注冊界面,如圖3所示,實現(xiàn)用戶的登錄以及注冊;
2)數(shù)據(jù)展示界面,如圖4、5、6所示,實現(xiàn)地區(qū)繪制,區(qū)域分析圖表的展示,小區(qū)分析圖表的展示,參與人數(shù)的展示,不同區(qū)域的數(shù)據(jù)修正以及不同小區(qū)的數(shù)據(jù)修正;
3)個人信息界面,如圖7所示,實現(xiàn)用戶信息的展示和修改,用戶密碼的更改。
4 結束語
對一個系統(tǒng)進行開發(fā)不只是僅僅體現(xiàn)在做出什么東西,而要在于對整體架構的分析、設計。在分析時還得考慮實際的使用狀況,不能想當然地自己認為是什么樣就是什么樣,要站在不同人的角度對自己的項目進行檢驗和找出缺點。在制作的過程中,我們總會發(fā)現(xiàn)出一些問題,必須經(jīng)過團隊成員之間的多次溝通和交流,才能使系統(tǒng)得以完善。該系統(tǒng)將會對用戶有著很大的用處,通過大數(shù)據(jù)給用戶提供更直觀的區(qū)域數(shù)據(jù)關聯(lián)分析,便于用戶的參考。
參考文獻:
[1] 陳樂.基于Python的網(wǎng)絡爬蟲技術[J].電子世界,2018(16):163,165.
[2] 林子雨.大數(shù)據(jù)技術原理與應用:概念、存儲、處理、分析與應用[M].北京:人民郵電出版社,2017.
[3] Apache Hadoop Project[EB/OL].[2019-12-20].http://Hadoop.apache.org.
[4] 王菲露,李軍,宋楊,等.基于Ajax技術的ECharts實時圖形報表實現(xiàn)[J].黑龍江工業(yè)學院學報(綜合版),2019,19(12):79-83.
[5] 柴青山.基于MVVM模式的Vue.js框架在物流軟件自動化測試系統(tǒng)中的應用研究[D].北京:北京郵電大學,2019.
[6] 陳宇收,饒宏博,王英明,等.基于JWT的前后端分離程序設計研究[J].電腦編程技巧與維護,2019(9):11-12.
【通聯(lián)編輯:謝媛媛】