您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何使用Spark分析拉勾網(wǎng)招聘信息”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用Spark分析拉勾網(wǎng)招聘信息”這篇文章吧。
假設(shè)我們從數(shù)據(jù)的采集,存儲(chǔ)到數(shù)據(jù)的讀取與使用,都是使用傳統(tǒng)的語(yǔ)言工具,比如nodejs.
我們?nèi)绻胫赖降子胁煌男剿斡卸嗌僬衅嘎毼徊亩嗟缴倥判?我們可能需要:
新建對(duì)象,存儲(chǔ)各個(gè)公司的數(shù)據(jù);
循環(huán)讀取數(shù)據(jù),豐富各個(gè)公司的數(shù)據(jù);
以薪水為分組,記錄各個(gè)公司各個(gè)職位的信息;
以招聘數(shù)量為標(biāo)準(zhǔn)排序;
步驟,還算簡(jiǎn)單.暫且不提數(shù)據(jù)集再大些時(shí),內(nèi)存是極有可能吃不消;但是第2,3步的邏輯細(xì)節(jié),就需要不少代碼判斷,比如如何循環(huán)讀取文件數(shù)據(jù)?如果文件名命名是不規(guī)律的呢?如果文件數(shù)據(jù)是損壞的不規(guī)律數(shù)據(jù)呢?文件數(shù)據(jù)的json,并不是一個(gè)直接可用的職位數(shù)組,json結(jié)構(gòu)轉(zhuǎn)換的操作,邏輯上對(duì)你來說好實(shí)現(xiàn)嗎?
誠(chéng)然,用編程語(yǔ)言,沒有什么做不了的,只是時(shí)間問題;既然談到了時(shí)間,如果有另外一種明顯快的多的方式,你會(huì)不用嗎?
使用Spark實(shí)現(xiàn)上述同樣的邏輯.以下操作,基于交互編程工具Zeppelin:
val job = sqlContext.read.json("jobs") job.registerTempTable("job") job.printSchema()
%sql SELECT postionCol.salary,COUNT(postionCol.salary) salary_count FROM job LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol WHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.salary ORDER BY salary_count DESC
真的可以直接使用類似于SQL的語(yǔ)法,進(jìn)行半結(jié)構(gòu)數(shù)據(jù)的復(fù)雜查詢,不知道各位看官,看完有何感想?
如果你的SQL功底,不是特別好,我的建議是:有空多看看文檔,有需求時(shí)先打英文關(guān)鍵詞google
送給有需要的童鞋:
%sql SELECT postionCol.companyFullName,COUNT(postionCol.companyFullName) postition_count FROM job LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol WHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.companyFullName ORDER BY postition_count DESC
%sql SELECT postionCol.workYear,COUNT(postionCol.workYear) workYears FROM job LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol WHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.workYear ORDER BY workYears DESC
%sql SELECT postionCol.education,COUNT(postionCol.education) education_count FROM job LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol WHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.education ORDER BY education_count DESC
%sql SELECT postionCol.companySize,COUNT(postionCol.companySize) company_size_ount FROM job LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol WHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.companySize ORDER BY company_size_ount DESC
以上是“如何使用Spark分析拉勾網(wǎng)招聘信息”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。