摸魚大數據——Spark Core——RDD綜合案例——搜狗搜索流

2.1 數據源介紹

訪問時間 用戶id []里面是用戶輸入搜索內容 url結果排名 用戶點擊頁面排序 用戶點擊URL

字段與字段之間的分隔符號為 \t和空格 (制表符號)

2.2 需求分析
需求一: 統計每個 關鍵詞 出現了多少次,最終展示top10數據關鍵詞示例: ['.','+','的',360', '安全衛士', '哄搶', '救災物資', '75810', '部隊' ...]注意:'.','+','的'都需要過濾 
?
需求二: 統計每個用戶每個 搜索內容 點擊的次數,最終展示top5數據
?
需求三: 統計每個分鐘頁面點擊次數,最終展示top5數據(課后作業)

2.3jieba分詞器
說明:
發現在數據中,并沒有直接的關鍵詞,關鍵詞數據是包含在搜索詞中,而且一個搜索詞中包含了多個關鍵詞,所有如何想基于關鍵詞進行統計, 首先需求先拆分搜索詞,獲取關鍵詞,思考:如何做呢?
?
借助第三方的分詞工具實現中文分詞Java語言:IK分詞器Python語言:jieba(結巴)分詞器
?
如何使用jieba分詞器呢?
1- 需要在系統中安裝jieba分詞庫: local模式只需要安裝在node1即可 如果集群模式運行 需要各個節點都要安裝安裝命令:  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba

安裝成功的截圖:

測試

# 導包
import jieba
?
# main程序的入口
if __name__ == '__main__':# 精確模式r1 = list(jieba.cut('我要去黑馬找斌哥學習大數據技術'))print(r1)# 全模式r2 = list(jieba.cut('我要去黑馬找斌哥學習大數據技術',cut_all=True))print(r2)# 搜索引擎模式r3 = list(jieba.cut_for_search('我要去黑馬找斌哥學習大數據技術'))print(r3)

2.4 代碼實現
2.3.1 數據準備
  • 1- 將數據文件拷貝到data目錄下:

  • 2- 數據清洗_分析

# 導包
import os
?
import jieba
from pyspark import SparkConf, SparkContext
?
# 綁定指定的python解釋器
os.environ['SPARK_HOME'] = '/export/server/spark'
os.environ['PYSPARK_PYTHON'] = '/root/anaconda3/bin/python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/root/anaconda3/bin/python3'
?
?
def get_topN_keyword(etlRDD, n):r1 = etlRDD.flatMap(lambda line_list: list(jieba.cut(line_list[2]))) \.filter(lambda word: word not in ('.', '+', '的')) \.map(lambda word: (word, 1)) \.reduceByKey(lambda agg, curr: agg + curr) \.top(n, lambda t: t[1])print(r1)
?
?
def get_topN_search(etlRDD,n):r2 = etlRDD.map(lambda line_list: ((line_list[1], line_list[2]),1) ) \.reduceByKey(lambda agg, curr: agg + curr) \.top(n, lambda t: t[1])print(r2)
?
?
# 創建main函數
if __name__ == '__main__':# 1.創建SparkContext對象conf = SparkConf().setAppName('pyspark_demo').setMaster('local[*]')sc = SparkContext(conf=conf)
?# 2.數據輸入textRDD = sc.textFile('file:///export/data/spark_project/spark_core/data/SogouQ.sample')print(textRDD.count()) ?# 測試原始數據量10000# 3.數據處理(切分,轉換,分組聚合)etlRDD = textRDD.filter(lambda line: line.strip() != '').map(lambda line: line.split()).filter(lambda line_list: len(line_list) >= 6)# 去除搜索內容兩端的 [ ]etlRDD = etlRDD.map(lambda line_list:[line_list[0],line_list[1],line_list[2][1:-1],line_list[3],line_list[4],line_list[5]])# 4.數據輸出# 需求一: 統計每個 關鍵詞 出現了多少次, 最終展示top10數據 注意:'.', '+', '的'  都需要過濾# 偽SQL:select 關鍵詞 ,count(*)  from  搜狗表 group by 關鍵詞get_topN_keyword(etlRDD, 10)# 需求二: 統計每個用戶 每個 搜索內容 點擊的次數, 最終展示top5數據# 偽SQL:select 用戶,搜索內容,count(*)  from  搜狗表 group by 用戶,搜索內容get_topN_search(etlRDD,5)# 5.關閉資源sc.stop()

可能遇到的錯誤:

原因: reduceByKey只能接收元組中有2個元素的情況

3、數據核對

大數據開發人員/數據分析人員,必須要對自己統計的指標結果負責!!!
?
結果數據的核對方式:
1- (不常用)在離線文件中直接ctrl+F搜索關鍵內容核對
2- (常用)一般原始數據會存放在MySQL/Hive中一份,可以編寫和代碼邏輯完全一樣的SQL來進行核對。可以通過如下方式來提高核對效率:2.1- 如果是分區表,挑選幾個分區進行核對即可2.2- 如果是分桶表, 可以抽樣查詢幾個桶核對2.3- 也可以使用tablesample函數對抽樣查詢2.4- 可以在SQL的where語句中,添加數據過濾條件,例如:時間范圍過濾條件、用戶編號過濾條件等,將核對的數據量縮小,提高核對效率
3- (不常用,難度比較大)可以對重點指標的同比、環比進行監控。還可以結合算法的方式對指標統計結果進行檢測。
4-  個人經驗或者同事互相幫忙查看測試

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40055.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40055.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40055.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zabbix觸發器

目錄 觸發器基礎概念 創建和管理觸發器 示例 定義一個觸發器 在 Zabbix 中,觸發器(Trigger)用于定義在監控數據滿足特定條件時觸發警報或動作。觸發器是實現監控告警和自動響應的核心組件之一。以下是關于 Zabbix 觸發器的詳細解釋和用法…

yaml格式轉換成json格式

yaml格式轉換成json格式 ①postman生成的結果是yaml格式 ps:postman輸出的格式是沒有自動換行的,需要將內容換行 ②復制到Python的腳本跑一趟:自動換行并去掉/n; str " "//(postman輸出的內容) print(st…

唐僧說:分數限制下,選好專業還是選好學校?

貧僧自東土大唐而來,往西天取經,雖非塵世中人,卻也常聞世間煩惱。今見24年高考帷幕已落,萬千學子面臨新的人生抉擇,心中不禁生出幾分感慨。學校與專業,猶如修行路上的兩座山門,一者關乎環境氛圍…

HTTPS保證傳輸安全的關鍵點

哈嘍,大家好呀,淼淼又來和大家見面啦,在如今高度數字化的世界里,信息的安全傳輸成為了至關重要的議題。HTTPS(超文本傳輸安全協議)作為HTTP協議的安全升級版,為網絡數據的交換提供了強大的安全保…

LMT加仿真,十一屆大唐杯全國總決賽

這次省賽帶了太多個省一了,并且很多都進入了國賽總決賽,具體可看下面的圖片,只放了一部分。目前只有B組是只有一個商用設備賽也就是LMT,A組和高職組都是仿真實踐賽加上商用設備賽。 針對商用設備賽有對應的資料&#xff…

windows server2016搭建AD域服務器

文章目錄 一、背景二、搭建AD域服務器步驟三、生成可供java程序使用的keystore文件四、導出某用戶的keytab文件五、主機配置hosts文件六、主機確認是否能ping通本人其他相關文章鏈接 一、背景 親測可用,之前搜索了很多博客,啥樣的都有,就是不介紹報錯以…

FastDDS中的環境變量

目錄 FASTDDS_DEFAULT_PROFILES_FILESKIP_DEFAULT_XMLFASTDDS_BUILTIN_TRANSPORTSROS_DISCOVERY_SERVERROS_SUPER_CLIENTFASTDDS_STATISTICSFASTDDS_ENVIRONMENT_FILE 我們承擔ROS,FastDDS,C,cmake等技術的項目開發和專業指導和培訓&#xff…

深度學習算法bert

bert 屬于自監督學習的一種(輸入x的部分作為label) 1. bert是 transformer 中的 encoder ,不同的bert在encoder層數、注意力頭數、隱藏單元數不同 2. 假設我們有一個模型 m ,首先我們為某種任務使用大規模的語料庫預訓練模型 m …

中國1km高分辨率高質量逐年近地表CO數據集(2013-2022年)

該數據為中國高分辨率高質量逐年CO數據集,該數據集主要的空間范圍覆蓋整個中國,其中內容包括中國1km高分辨率高質量逐年CO數據集(2013-2022年)。時間分辨率為年,單位為mg/m3,數據以(.nc/.tif)格式進行存儲。

人工智能寫作對話系統源碼 自然語言的處理能力 前后端分離 帶完整的安裝代碼包以及搭建教程

系統概述 隨著互聯網信息爆炸式增長,用戶對于高質量、個性化內容的需求日益增長,而傳統的內容生成方式已難以滿足這一需求。另一方面,深度學習和自然語言處理技術的突破性進展,為人機交互提供了新的可能。本項目正是在此背景下應…

檢索增強生成RAG系列7--RAG提升之高級階段

系列5中講到會講解3個方面RAG的提升,它們可能與RAG的準確率有關系,但是更多的它們是有其它用途。本期來講解第三部分:高級階段。之所以說是高級階段,可能是不好歸一,而且實現起來相對于前面來說可能更為復雜。 目錄 1…

PyCharm中如何將某個文件設置為默認運行文件

之前在使用JetBrain公司的另一款軟件IDEA的時候,如果在選中static main函數后按鍵altenter可以默認以后運行Main類的main函數。最近在使用PyCharm學習Python,既然同為一家公司的產品而且二者的風格如此之像,所以我懷疑PyCharm中肯定也有類似的…

fastadmin 如何給頁面添加水印

偶然發現fastadmin框架有個水印插件&#xff0c;看起來漂亮&#xff0c;就想也實現這樣的功能&#xff0c;看到需要費用。但是現成的插件需要費用&#xff0c;自己動手豐衣足食。說干就干。 1. 找到watermark.js &#xff0c;放到assets/js/ 下面 2.具體頁面引入 <script…

【總線】AXI4第八課時:介紹AXI的 “原子訪問“ :獨占訪問(Exclusive Access)和鎖定訪問(Locked Access)

大家好,歡迎來到今天的總線學習時間!如果你對電子設計、特別是FPGA和SoC設計感興趣&#xff0c;那你絕對不能錯過我們今天的主角——AXI4總線。作為ARM公司AMBA總線家族中的佼佼者&#xff0c;AXI4以其高性能和高度可擴展性&#xff0c;成為了現代電子系統中不可或缺的通信橋梁…

ssm高校宿舍用電管理系統-計算機畢業設計源碼97859

摘要 隨著高校規模的擴大和學生數量的增加&#xff0c;高校宿舍的用電需求也日益龐大。為了提高用電效率、節約能源、確保用電安全和方便管理&#xff0c;開發一個高校宿舍用電管理系統具有重要意義。本系統將采用Java作為后端開發語言&#xff0c;具備跨平臺特性&#xff0c;能…

【高級篇】第10章 Elasticsearch 集群管理與擴展

在本章中,我們將深入探討Elasticsearch集群的管理與擴展策略,旨在幫助讀者構建一個既能應對大規模數據處理需求,又能保持高可用性和彈性的系統架構。我們將從集群架構設計入手,解析不同節點的角色與配置,然后轉向節點發現與配置同步機制,最后討論水平擴展與容錯策略,確保…

windows中使用nssm設置nginx開機自啟動

1、下載nssm工具 https://nssm.cc/release/nssm-2.24.zip 2、解壓并根據自己電腦的位數定位到64或32 3、執行nssm.exe install 4、執行命令啟動服務并設置開機自啟動 #啟動服務 net start nginxService #開機自啟動 sc config nginx-service startauto

類和對象-C++運算符重載-加號運算符重載

加號運算符重載 1、成員函數重載號 #include<iostream>using namespace std;class Person { public://1、成員函數重載號Person operator(Person &p){Person temp;temp.m_Athis->m_Ap.m_A;temp.m_Bthis->m_Bp.m_B;return temp; }int m_A;int m_B; }; void t…

【C語言】通過fgets和fscanf了解讀寫文件流的概念

在C語言中&#xff0c;fgets和fscanf都是用于從文件或輸入流中讀取數據的函數&#xff0c;但它們的工作方式和用途有所不同。 1.fgets&#xff08;Get File String&#xff09; 示例代碼&#xff1a; char buffer[100]; fgets(buffer, sizeof(buffer), stdin); fgets 函數用于…

定位線上同步鎖仍然重復扣費的Bug定位及Redis分布式鎖解決方案

在實際生產環境中&#xff0c;處理訂單的并發請求時&#xff0c;我們經常會遇到重復扣費的問題。本文將通過一個具體的代碼示例&#xff0c;分析在使用同步鎖時仍然導致重復扣費的原因&#xff0c;并提供一個基于Redis分布式鎖的解決方案。 背景&#xff1a;這個案例出現在商家…