


摘? 要:從網(wǎng)絡(luò)招聘網(wǎng)站采集招聘數(shù)據(jù),存儲于Hadoop分布式集群上,使用MapReduce程序進(jìn)行清洗、轉(zhuǎn)換為滿足分析要求的結(jié)構(gòu)化數(shù)據(jù),最后利用數(shù)據(jù)倉庫Hive從職位的區(qū)域分布、薪資分布、福利頻次、技能頻次等四個維度進(jìn)行分析,為大學(xué)生的職業(yè)規(guī)劃、技能學(xué)習(xí)和就業(yè)提供參考建議,為高校的專業(yè)建設(shè)、課程設(shè)置和人才培養(yǎng)提供決策支持。
關(guān)鍵詞:大數(shù)據(jù)分析;Hive;數(shù)據(jù)采集;就業(yè)分析
中圖分類號:TP311.13? ? ? 文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2020)18-0128-04
Abstract:A hiring data gathered from the internet recruitment website,stored in the Hadoop distributed on a cluster,use MapReduce program to clean and transform into structured data that meets analysis requirements. Finally,the data warehouse Hive is used to analyze the four dimensions of position distribution,salary distribution,benefit frequency,and skill frequency,provide reference suggestions for college studentscareer planning,skill learning and employment,and provide decision-making support for college professional construction,curriculum setting and talent training.
Keywords:big data analysis;Hive;data collection;employment analysis
0? 引? 言
近年來,網(wǎng)絡(luò)招聘因其覆蓋面廣、時效性強、成本低等特點,逐漸成為大學(xué)畢業(yè)生求職的主要方式,大學(xué)生可以登錄招聘網(wǎng)站,只需要輸入關(guān)鍵字就可以搜索相關(guān)的一些職位信息,這些職位記錄數(shù)據(jù)體量大、類型多樣、增長速度快、價值密度低,這些都符合大數(shù)據(jù)特征,但這些海量數(shù)據(jù)中潛在著高價值的信息,而這些高價值的信息無法直接獲取,需要我們應(yīng)用大數(shù)據(jù)技術(shù)對海量數(shù)據(jù)中清洗、規(guī)整、分析,得到有價值的信息。一個頂尖的企業(yè)網(wǎng)絡(luò)招聘平臺上一個崗位的招聘數(shù)據(jù)可達(dá)幾十萬條,而且每天還在不斷增長,要從這些海量數(shù)據(jù)中提煉出有價值的信息,如大多數(shù)公司都要求職位應(yīng)具備哪些技能,哪些城市緊缺這樣的人才,職位的薪資待遇如何等,就需要大數(shù)據(jù)分析,大數(shù)據(jù)分析是全量分析,而不是抽樣調(diào)查,所以這樣的數(shù)據(jù)比較真實、準(zhǔn)確。依據(jù)大數(shù)據(jù)分析的結(jié)果,大學(xué)生在大學(xué)期間就做好自己的職業(yè)規(guī)劃,有針對性地學(xué)習(xí)相應(yīng)的技能,向急需人才的公司投遞簡歷,這樣有的放矢,求職的成功率就會更高,就會更容易得到自己心儀的職位和薪資待遇。
本文作者從事高等職業(yè)院校大數(shù)據(jù)技術(shù)與應(yīng)用專業(yè)的教學(xué)工作,已初步具備大數(shù)據(jù)專業(yè)知識和技能,對大數(shù)據(jù)分析技術(shù)有著深厚的興趣,在學(xué)習(xí)和研究過程中,體會到大數(shù)據(jù)分析的重要性,希望將其應(yīng)用到實際生活中。鑒于大學(xué)生在網(wǎng)絡(luò)招聘中遇到的職位選擇困境,故借用大數(shù)據(jù)分析給學(xué)生的就業(yè)提供一些參考和建議。
1? 項目架構(gòu)設(shè)計
在客戶端編寫Java網(wǎng)絡(luò)爬蟲程序,從企業(yè)招聘網(wǎng)站獲取職位數(shù)據(jù),存儲到Hadoop分布式存儲系統(tǒng)(HDFS)中,接著利用MapReduce(hadoop分布式計算框架)對這些非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行預(yù)處理,得到結(jié)構(gòu)化的數(shù)據(jù)再存儲到HDFS中,再利用Hive建立數(shù)據(jù)倉庫并裝載這些預(yù)處理后的結(jié)構(gòu)化數(shù)據(jù),然后利用Hive的HQL語句對這些數(shù)據(jù)進(jìn)行分析,分析結(jié)果通過Sqoop工具從大數(shù)據(jù)平臺導(dǎo)入到客戶端的MySQL數(shù)據(jù)庫中,最后利用Echarts工具對MySQL數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行可視化展示,整個項目的流程如圖1所示。
2? 技術(shù)實現(xiàn)
因為采集的數(shù)據(jù)量大,而且數(shù)據(jù)量在不斷增長,所以需要搭建分布式集群進(jìn)行存儲,本項目安裝的是Hadoop分布式系統(tǒng),存儲在分布式系統(tǒng)的數(shù)據(jù)需要進(jìn)行分析,所以要安裝大數(shù)據(jù)分析工具Hive,分析結(jié)果需要導(dǎo)入關(guān)系數(shù)據(jù)庫MySQL進(jìn)行Web展示,所以需要安裝Sqoop工具。因為Java語言和Hadoop兼容性好,加上Apache有豐富、成熟的HDFS的Java API,而且數(shù)據(jù)預(yù)處理要編寫MapReduce程序,所以Java是開發(fā)的首選語言。數(shù)據(jù)可視化則采用功能強大的Echarts插件,數(shù)據(jù)可展示為柱狀圖、餅圖等豐富多樣的圖表,也可采用詞云展示某些數(shù)據(jù)的頻次。
2.1? 搭建大數(shù)據(jù)集群環(huán)境
本項目集群采用一主兩從共三個節(jié)點,其中master為管理節(jié)點,slave1和slave2為數(shù)據(jù)節(jié)點,參數(shù)如表1所示。
2.2? 數(shù)據(jù)采集
數(shù)據(jù)是一切分析的基礎(chǔ),本文將編寫爬蟲程序采集某招聘網(wǎng)站“大數(shù)據(jù)”相關(guān)職位的數(shù)據(jù),并存儲于集群上。
2.2.1? 分析網(wǎng)頁數(shù)據(jù)
使用谷歌瀏覽器Chrome的開發(fā)者工具,分析網(wǎng)頁的數(shù)據(jù)結(jié)構(gòu),了解請求的地址、類型、請求頭、請求參數(shù)等信息,為下一步編寫網(wǎng)絡(luò)爬蟲程序做好準(zhǔn)備。
2.2.2? 編寫網(wǎng)絡(luò)爬蟲程序
使用Eclipse等Java開發(fā)工具創(chuàng)建Maven項目,添加爬蟲程序所需的HttpClient框架依賴和Hadoop框架依賴,啟動集群準(zhǔn)備接受采集的數(shù)據(jù)。
創(chuàng)建封裝響應(yīng)結(jié)果的JavaBean類HttpClientResp,該類就是用來封裝響應(yīng)結(jié)果的,包括兩個屬性,其code屬性存儲的是響應(yīng)狀態(tài)碼,content屬性存儲的是響應(yīng)數(shù)據(jù)內(nèi)容,例如:[code=200,content={"success":true,"msg":null,"code":0,…}]。
{kd:大數(shù)據(jù),
city:全國}。
創(chuàng)建封裝存儲在HDFS的工具類HttpClientHdfsUtils,該類是用來將響應(yīng)數(shù)據(jù)存儲到HDFS上,其中參數(shù)URL表示為HDFS的地址,如:hdfs://master:9000,參數(shù)fileName為存儲在HDFS上的文件名,參數(shù)data為存儲的數(shù)據(jù)。
調(diào)用上述創(chuàng)建的工具類封裝請求頭,封裝請求參數(shù),獲得響應(yīng)數(shù)據(jù),完成從網(wǎng)頁中爬取數(shù)據(jù)并存入HDFS的過程。
2.3? 數(shù)據(jù)預(yù)處理
直接從網(wǎng)頁中采集的數(shù)據(jù)類型繁雜多樣,數(shù)據(jù)中夾雜著不完整、重復(fù)以及錯誤的數(shù)據(jù),而且大多數(shù)數(shù)據(jù)是我們分析工作所不需要的數(shù)據(jù),如果直接進(jìn)行分析的話,會影響分析效率,甚至?xí)?dǎo)致分析結(jié)果的錯誤,最終會導(dǎo)致決策的錯誤。所以數(shù)據(jù)分析之前,需要進(jìn)行清洗、轉(zhuǎn)換等處理變成符合Hive分析要求的結(jié)構(gòu)化的數(shù)據(jù)。
2.3.1? 分析預(yù)處理數(shù)據(jù)并設(shè)計方案
查看采集的數(shù)據(jù)的格式,按照數(shù)據(jù)分析的維度,確定數(shù)據(jù)分析的字段。我們的這次職位分析主要考查職位的區(qū)域(城市)分布、職位的薪資分布、福利標(biāo)簽的頻次和技能標(biāo)簽的頻次,所以從采集到的繁雜數(shù)據(jù)中抽取這4個方面的數(shù)據(jù),然后進(jìn)行刪減、合并和格式的處理,最終得到結(jié)構(gòu)化的數(shù)據(jù),因為采集的數(shù)據(jù)在HDFS上,所以需要編寫MapReduce程序進(jìn)行數(shù)據(jù)預(yù)處理,處理后的數(shù)據(jù)還是存儲在HDFS上,整個清洗過程如圖2所示。
2.3.2? 編寫MapReduce程序
編寫map程序,繼承Mapper類,重寫map()方法,map()方法是數(shù)據(jù)清洗的核心代碼,因為采集的數(shù)據(jù)存儲在HDFS的數(shù)據(jù)文件中,且數(shù)據(jù)文件中有很多數(shù)據(jù)都是與我們研究、分析無關(guān)的數(shù)據(jù),需要剔除,還有一些數(shù)據(jù)格式不規(guī)范、不統(tǒng)一,需要進(jìn)一步刪除、合并和轉(zhuǎn)換處理,最后得到我們需要的數(shù)據(jù),清洗過的數(shù)據(jù)仍然存儲于HDFS上。
編寫清洗主程序,因為清洗程序需要打包并發(fā)布到集群中各節(jié)點上去執(zhí)行,所以要在主程序中設(shè)置清洗的主程序類,特別是要設(shè)置Mapper類,設(shè)置切片的大小,設(shè)置數(shù)據(jù)輸入文件的目錄以及數(shù)據(jù)輸出文件的目錄。
將上述編寫的預(yù)處理程序打成jar包并上傳至集群,即將程序移動到各個節(jié)點上,讓程序直接讀取該節(jié)點的本地數(shù)據(jù),以“移動計算”代替“移動數(shù)據(jù)”,減少了I/O的開銷。
2.4? 數(shù)據(jù)分析
數(shù)據(jù)分析是大數(shù)據(jù)價值鏈中最重要的一環(huán),通過數(shù)據(jù)分析,我們可以從雜亂無章的數(shù)據(jù)中萃取和提煉有價值的信息,從而找出研究對象的內(nèi)在規(guī)律,最終為決策提供參考建議。
我們可以使用數(shù)據(jù)倉庫Hive編寫HQL語句進(jìn)行數(shù)據(jù)分析,HQL語句會自動轉(zhuǎn)換為MapReduce程序,這樣大數(shù)據(jù)分析人員無須編寫復(fù)雜的MapReduce程序就可以進(jìn)行大數(shù)據(jù)的分析工作。
2.4.1? 設(shè)計hive數(shù)據(jù)倉庫
我們要分析的數(shù)據(jù)在HDFS上,想要使用Hive對此進(jìn)行數(shù)據(jù)分析,就需要設(shè)計數(shù)據(jù)倉庫以承載HDFS上的數(shù)據(jù)。因為我們需要從城市、薪資、福利和技能4個維度進(jìn)行分析,所以我們需要設(shè)計1張事實表和4張維度表,其中事實表如表2所示,城市維度表如表3所示。
2.4.2? 分析數(shù)據(jù)
將Hive的HQL查詢語句分析各個維度的數(shù)據(jù),并將分析結(jié)果導(dǎo)入前面已經(jīng)建好的表中,最后查詢表得到分析結(jié)果。
例如:將職位按區(qū)域分布的數(shù)據(jù)導(dǎo)入到城市維度表city_label中:
hive>insert overwrite table city_label select city,count(1)from jobdata_origin group by city;
2.5? 數(shù)據(jù)可視化
利用數(shù)據(jù)倉庫Hive進(jìn)行數(shù)據(jù)分析,結(jié)果會以文字的形式呈現(xiàn)在控制臺上,不直觀,所以需要對數(shù)據(jù)進(jìn)行可視化,讓數(shù)據(jù)變得更容易理解,化繁為簡,從而實現(xiàn)更有效的決策過程。
(1)利用Sqoop工具將Hive分析結(jié)果數(shù)據(jù)導(dǎo)入客戶端MySQL數(shù)據(jù)庫。
(2)編寫Web應(yīng)用程序,并利用ECharts插件Web展示MySQL中的數(shù)據(jù),根據(jù)展示的結(jié)果得出結(jié)論和預(yù)測。
通過觀察圖3的職位數(shù)在城市分布圖,可以看出大數(shù)據(jù)職位的需求主要集中在大城市,一線城市(北、上、廣、深)占據(jù)前幾名的位置,排名依次是北京、深圳、上海、廣州,杭州緊隨其后,可能因為阿里巴巴這個互聯(lián)網(wǎng)巨頭起到了不小的帶領(lǐng)作用。這幾個城市大數(shù)據(jù)相關(guān)職位占據(jù)全國的四分之三以上。所以想?yún)⒓哟髷?shù)據(jù)相關(guān)職位的從業(yè)者可先從這幾個城市考慮,機遇相比會高出很多。
通過觀察圖4的薪資分布,可以了解到全國大數(shù)據(jù)相關(guān)職位的月薪資分布主要集中在11k~30k之間,其中出現(xiàn)頻次最高的月薪資區(qū)間在11k~15k,最高月薪達(dá)80k,平均月薪23k,所以大數(shù)據(jù)相關(guān)的崗位收入可觀。
通過觀察圖5的福利標(biāo)簽的詞云圖,可以看到大數(shù)據(jù)相關(guān)職位的招聘單位都比較重視“績效獎金”“五險一金”“股票期權(quán)”“技能培訓(xùn)”“節(jié)日禮物”等福利。對這些福利比較關(guān)心的求職者可以參考。
通過觀察圖6的技能標(biāo)簽的詞云圖,可以看到要從事大數(shù)據(jù)相關(guān)工作需要掌握Hadoop、Spark、Hive、Java等技能,想要從事大數(shù)據(jù)行業(yè)的人員或大數(shù)據(jù)專業(yè)的大學(xué)生可制定學(xué)習(xí)規(guī)劃,有針對地學(xué)習(xí)并掌握這些技能,為給將來的就業(yè)助一臂之力。
3? 結(jié)? 論
通過專業(yè)的相關(guān)職位的多維度分析,大學(xué)生可以提前了解自己所學(xué)專業(yè)的崗位技能要求、薪資待遇,提前做好職業(yè)規(guī)劃,根據(jù)技能要求制定相應(yīng)的學(xué)習(xí)計劃,掌握相應(yīng)的技能,為將來就業(yè)做好準(zhǔn)備,另外及時了解各城市的職位分布會給將來的就業(yè)增加成功率。
參考文獻(xiàn):
[1] WHITE T.Hadoop權(quán)威指南:大數(shù)據(jù)的存儲與分析:第4版 [M].王海,華東,劉喻,等譯.北京:清華大學(xué)出版社,2017.
[2] 黑馬程序員.大數(shù)據(jù)項目實戰(zhàn) [M].北京:清華大學(xué)出版社,2020.
[3] KIMBALL R,ROSS M.數(shù)據(jù)倉庫工具箱:第3版 [M].王念濱,周連科,韋正現(xiàn),譯.北京:清華大學(xué)出版社,2015.
[4] 盧愛芬.基于Hadoop的大數(shù)據(jù)處理系統(tǒng)分析與研究 [J].現(xiàn)代信息科技,2020,4(2):109-111.
[5] 田銀花,韓咚.MapReduce的隨機Petri網(wǎng)模型研究 [J].現(xiàn)代電子技術(shù),2012,35(24):92-93+96.
作者簡介:朱永忠(1974—),男,漢族,安徽桐城人,教師,講師,碩士研究生,研究方向:大數(shù)據(jù)技術(shù)與應(yīng)用。