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