溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何用spark分析網(wǎng)吧同行朋友思路

發(fā)布時(shí)間:2021-12-16 20:54:26 來源:億速云 閱讀:120 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何用spark分析網(wǎng)吧同行朋友思路,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

mysql庫中有2.5kw網(wǎng)吧軌跡數(shù)據(jù),需要計(jì)算同行關(guān)系:計(jì)算兩人在相同網(wǎng)吧十分鐘前后上下網(wǎng)三次及以上(如:a和b在19號十分鐘前后出現(xiàn)在了A網(wǎng)吧,又在21號十分鐘前后出現(xiàn)在了B網(wǎng)吧,再在22號十分鐘前后出現(xiàn)在了D網(wǎng)吧)就需要保留他們的身份ID和一起上下網(wǎng)的次數(shù)。2.5kw軌跡中有8k+網(wǎng)吧請問有什么思路嗎?

如果flink有更好的處理方式也可以。

使用用一個(gè)mysql的連接器,但是這東西需要配置一個(gè)分區(qū)列。

直接用的網(wǎng)吧編號。這樣會分8000多分區(qū)(而且后面的邏輯也沒有用到這個(gè)分區(qū)列),是不是有問題?今天測試了一下。兩個(gè)網(wǎng)吧,3w多數(shù)據(jù),兩個(gè)小時(shí)沒跑完。。(我們是先用連接器抽出數(shù)據(jù),按照網(wǎng)吧分組計(jì)算單次然后聚合篩選3次及以上的)網(wǎng)吧數(shù)據(jù)從幾條到幾萬條不等。

分區(qū)列的問題解決:

  1. 可以采用時(shí)間戳(long型)分區(qū),會造成多余的一次shuffle。
  2. 自定義jdbcRDD,我記得以前分享過網(wǎng)上也有資料,這樣就可以自定義分區(qū)策略了。 數(shù)據(jù)還是要有明顯的分區(qū)列的。
  3. 增加自增ID列。
處理思路:  
按照網(wǎng)吧ID進(jìn)行g(shù)roup by,然后同組內(nèi)兩兩組合,判斷A,B進(jìn)入網(wǎng)吧時(shí)間差值是否小于10min,同時(shí)判斷離開網(wǎng)吧的時(shí)間是否相差10min以內(nèi),1.如果兩者都是true就保留,否則過濾。保留人物ID要進(jìn)行兩兩組合,比如,A#B;兩者的順序可以定義個(gè)排序策略,比如字符串的話字典排序,這樣下面可以用。flatmap展開之后key和value翻轉(zhuǎn)。
2.然后在進(jìn)行一次group by(key),此時(shí)的key就是A#B的組合了,value是網(wǎng)吧,然后統(tǒng)計(jì)value的size是否大于三。
3.有疑問就是兩個(gè)人相同時(shí)間下班,住的距離比較近,就經(jīng)常去相同的離他們都近的網(wǎng)吧,同時(shí)上下網(wǎng),不是同行,確實(shí)巧合。這個(gè)是否要處理。

上述內(nèi)容就是如何用spark分析網(wǎng)吧同行朋友思路,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI