您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)SogouQ中如何實(shí)現(xiàn)WordCount,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
PS1: 日志原格式是GB2312編碼, 一定要記得轉(zhuǎn)成UTF-8
PS2: 日志格式和格式說明:
訪問時(shí)間\t用戶ID\t[查詢?cè)~]\t該URL在返回結(jié)果中的排名\t用戶點(diǎn)擊的順序號(hào)\t用戶點(diǎn)擊的URL,
這個(gè)格式有坑,
深坑:
"該URL在返回結(jié)果中的排名\t用戶點(diǎn)擊的順序號(hào)"這兩個(gè)字段之間的分割符并不是制表符\t, 而是空格
val sogouQRdd = sc.textFile("hdfs://node1:9000/sogouQ/input") sogouQRdd.cache # 在下一次Action操作時(shí), 將日志文件緩存到內(nèi)存中
實(shí)現(xiàn)普通的 WordCount, 但結(jié)果不會(huì)像 MapReduce 那樣按 Key(word) 排序
sogouQRdd.filter(_.split('\t').length == 5): 有兩個(gè)搜索關(guān)鍵字的字符串(為什么只是兩個(gè),別問我是怎么知道的), 居然有制表符\t, 一定要記得過濾掉
val wcWithoutSortRdd = sogouQRdd.filter(_.split('\t').length == 5).map(_.split('\t')(2)) .map((_, 1)).reduceByKey(_ + _) wcWithoutSortRdd.saveAsTextFile("hdfs://node1:9000/sogouQ/output/wc1")
wcWithoutSortRdd的輸出結(jié)果Top10
([中天ZT1818評(píng)論+site:www.pcpop.com|product.pcpop.com|channel.pcpop.com|pop.pcpop.com],1) ([三一重工+筑路機(jī)械],1) ([最快的視頻網(wǎng)站],1) ([zhutan],3) ([氟康],3) ([石家莊戰(zhàn)役],2) ([國(guó)外女子監(jiān)獄],1) ([A42B331參數(shù)],1) ([78bar],1) ([臨沂麥可斯],2)
實(shí)現(xiàn)按 Value(count) 排序(降序)的 WordCount
思路: 在 wcRdd 的基礎(chǔ)上, 先把K(word), V(count)反轉(zhuǎn), 此時(shí)對(duì)Key(count)進(jìn)行排序, 最后再反轉(zhuǎn)回去
val wcSortByCountRdd = wcWithoutSortRdd.map(x => (x._2, x._1)).sortByKey(false). map(x => (x._2, x._1)) wcSortByCountRdd.saveAsTextFile("hdfs://node1:9000/sogouQ/output/wc2")
思路2: 直接使用 sortBy() 操作
// _._2 : 元組的第2項(xiàng), 就是 count; false : 按降序排序 val wcSortByCountRdd = wcWithoutSortRdd.sortBy(_._2, false) wcSortByCountRdd.saveAsTextFile("hdfs://node1:9000/sogouQ/output/wc2")
wcSortByCountRdd的輸出結(jié)果Top10
([哄搶救災(zāi)物資],66906) ([汶川地震原因],58766) ([封殺莎朗斯通],12649) ([一個(gè)暗娼的自述],9758) ([廣州軍區(qū)司令員],8661) ([暗娼李湘],8584) ([成都警方掃黃現(xiàn)場(chǎng)],5371) ([百度],4958) // 用搜狗搜百度, 好像在黑百度, 嘿嘿嘿 ([尼泊爾地圖],4886) ([現(xiàn)役解放軍中將名單],4721)
看完上述內(nèi)容,你們對(duì)SogouQ中如何實(shí)現(xiàn)WordCount有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(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)容。