大資料workshop:《雲資料·大計算:海量日誌資料分析與應用》之《社交資料分析:好友推薦》篇
大資料workshop:《雲資料·大計算:海量日誌資料分析與應用》之《社交資料分析:好友推薦》篇
實驗背景介紹
瞭解更多2017雲棲大會·成都峰會 TechInsight & Workshop.
本手冊為雲棲大會Workshop《雲端計算·大資料:海量日誌資料分析與應用》的《社交資料分析:好友推薦》篇而準備。主要闡述如何在大資料開發套件中使用MR實現好友推薦。
MapReduce應用場景
- 搜尋:網頁爬取、倒排索引、PageRank;
- Web訪問日誌分析:分析和挖掘使用者在web上的訪問、購物行為特徵,實現個性化推薦;
- 文字統計分析:比如莫言小說的WordCount、詞頻TFIDF分析;學術論文、專利文獻的引用分析和統計;
- 海量資料探勘:非結構化資料、時空資料、影像資料的挖掘;
- 機器學習:監督學習、無監督學習、分類演算法如決策樹、SVM等;
- 自然語言處理:基於大資料的訓練和預測;基於語料庫構建單詞同現矩陣,頻繁項集資料探勘、重複文件檢測等;
- 廣告推薦:使用者點選(CTR)和購買行為(CVR)預測。
涉及大資料產品
好友推薦MapReduce演算法分析
現在,社交網路已經成為影響力巨大的資訊平臺,社交網站中,使用者可以通過“你可能感興趣的人”途徑增加交友方式。“你可能感興趣的人”也稱作“好友推薦”, 它主要是通過查詢兩個非好友之間的共同好友情況來實現的。下面,將通過一個例子,簡單介紹通過MapReduce的方式實現好友推薦功能。
例如:A,B,C,D,E五個人的好友關係如下圖,其中實線表示互為好友關係。那麼,如何獲取兩個不是好友的兩個人之間的好友數?並以此為參考,進行對使用者推薦陌生人。
首先,將好友關係分配到兩個Map進行處理,其中每個Map包含3條好友關係。對每一條好友關係進行拆分,若Key中的兩個人為朋友,則記錄value值為0,否則value值為1。將拆分的結果進行排序,其中(A B)和(B A)作為同一個key(A B)。
然後,將分別對兩個Map處理的記錄進行初步合併,若兩個記錄的Key值相同且每條記錄的Value都不為0,則Value值加1。注意:在Combine階段,必須保留Value為0的記錄,否則,在Reduce階段,獲取的結果會出錯。
最後,通過Reduce方式,合併兩個Map處理的Combine結果。首先,若兩個記錄的Key值相同且每條記錄的Value都不為0,則Value值加1;然後,將Value值為0的記錄刪除;最後,獲取不為好友的兩個使用者之間的公共好友數:Key為兩個不為好友的使用者,Value是兩個不是好友的使用者之間的共同好友數。社交網站或者APP可以根據這個數值對不是好友的兩個使用者進行推薦。
實驗詳情
下載實驗資料
點選下載實驗資料:friends_in_data.csv和MR jar包:friends_mr.jar至本地。
進入大資料開發套件
確保阿里雲賬號處於登入狀態。
- step1:點選進入大資料開發套件專案列表。
- step2:點選已經建立的專案空間名稱,進入大資料開發套件。
新建資料表
繼上實驗《資料採集:日誌資料上傳》和《資料加工:使用者畫像》中已經新建指令碼檔案,可以直接切換至指令碼開發tab下,雙擊開啟create_table_ddl指令碼檔案。若無新建指令碼檔案可通過如下詳細步驟進行建立指令碼檔案。
附建表SQL
drop table if exists dual;--建立系統dual
create table dual(id bigint);--如project中不存在此偽表,則需建立並初始化資料
insert overwrite table dual select count(*)from dual;--向系統偽表初始化資料
---建立好友推薦MR的資料輸入表.其中uid表示某個使用者;friends表示uid使用者的好友
create table friends_in (uid string, friends string);
---建立好友推薦MR的資料輸出表.其中userA表示某個使用者;userB表示不是userA的使用者,cnt表示userA和userB之間的共同好友數。
create table friends_out (userA string, userB string, cnt bigint);
匯入本地資料
- step1:完成輸入和輸出表的建立後,點選頂部功能欄中的匯入,匯入本地資料。然後,開啟本地儲存的檔案friends_in_data.csv(點選本小節頂部的附件名“friends_in_data.csv” ,下載本次實驗的測試資料)。
- step2:所有配置均設為預設,並檢視匯入的資料。完成後,點選下一步。
注意:在真實的工作環境中,資料必須以txt或csv的檔案型別匯入。
- step3:在本地資料匯入的頁面的“匯入至表”中,輸入friends_in,也就是將本次實驗的測試資料,匯入到好友推薦的輸入表friends_in中。確定目標欄位與源欄位匹配。完成後點選匯入。開始執行匯入操作。由於資料量較大,請等待1-2分鐘。
- step4:完成表資料匯入後,頁面會自動退出匯入介面。點選頁面左側欄中的表查詢tab頁,雙擊開啟表friends_in。然後,點選資料瀏覽,就可以快速檢視friends_in表中存
儲的資料。若顯示的資料與檔案 friends_in_data.csv資料相同,則證明本次實驗的測試資料匯入成功。
新增MR資源
- step1:點選最左側欄中的資源管理,然後在左側欄的資源管理列表的頂部,點選最右側的第一個圖示上傳資源,開始配置上傳資源資訊。
- step2:在彈出的對話方塊中,配置如下所示的上傳資源資訊。完成後,點選提交,將本地的好友推薦Jar包上傳到Data IDE環境中。
在頁面左側的資源管理下,可以檢視到上傳成功的Jar包friends_mr.jar
測試並驗證好友推薦
- step1:點選頁面頂層欄中的新建,新建任務,開始建立本次實驗的MR任務。
- step2:在彈出的對話方塊中,選擇新建任務的任務型別為工作流任務,並輸入任務名稱為friends_odps_mr。預設“排程型別”為“同期排程”。完成後,點選“建立”。
- step3:此時,右側頁面變為friends_odps_mr的畫布,拖右側節點元件中的OPEN MR到右側畫布的空白位置。
在畫布上,可以檢視到一個名稱為friends_mr的OPEN MR任務節點。雙擊,進入MR任務的編輯頁面。
- step4:輸入如下配置資訊,完成後,點選頂層欄中的儲存圖示,儲存MR任務的配置資訊。點選執行,執行本次配置的OPEN MR任務。
配置專案說明:
- MRJar包:點選文字框,並選擇friends_mr.jar
- 資源:預設設定為friends_mr.jar
- 輸入表:輸入friends_in
- mapper:輸入friends_mr_odps.FriendsMapper,此為Jar包中Mapper的class全名
- reducer:輸入friends_mr_odps.FriendsReducer,此為Jar包中Reducer的class全名
- combiner:輸入friends_mr_odps.FriendsCombiner,此為Jar包中Combiner的class全名
- 輸出表:輸入friends_out
- 輸出Key:輸入userA:String, userB:String
- 輸出Val:輸入cnt:Bigint
- step5:在底部的日誌中,可以檢視到執行狀態和執行結果。大約40s左右,頁面顯示“Current task status:FINISH”,表示已執行結束。
- step6:在上述建表指令碼檔案中輸入如下的SQL命令,並點選執行。查詢共同好友超過2個的資料資訊。
SELECT * FROM friends_out WHERE cnt>2 order by cnt desc limit 100;
恭喜大家完成《雲資料·大計算:海量日誌資料分析與應用》的Workshop,基於此相信大家也掌握了MaxCompute、大資料開發套件、Quick BI的基本操作,也能夠完成自己公司或個人的一些真實需求。關於更多的詳細內容,可以點選瞭解更多阿里雲數加。
相關文章
- 【轉載】大資料workshop:《雲資料·大計算:海量日誌資料分析與應用》大資料
- 大資料workshop:《雲資料·大計算:海量日誌資料分析與應用》之《資料分析展現:視覺化報表及嵌入應用》篇大資料視覺化
- 大資料workshop:《線上使用者行為分析:基於流式計算的資料處理及應用》之《實時資料分析:海量日誌資料多維透視》篇大資料
- 尋路大資料:海量資料與大規模分析大資料
- 大資料應用——資料探勘之推薦系統大資料
- 北京雲棲大會workshop:《資料處理:資料建模與加工》篇
- 大資料下網站資料分析應用大資料網站
- 大資料分析的應用與弊端大資料
- 大資料分析之資料下鑽上卷大資料
- 大資料與海量資料的區別大資料
- “大資料”與“海量資料”的區別大資料
- 大資料計算生態之資料計算(二)大資料
- 大資料計算生態之資料計算(一)大資料
- 推薦六個用於大資料分析的最好工具大資料
- 大資料、資料分析、資料探勘的差別大資料
- 大資料技術原理與應用——大資料概述大資料
- 網路資料分析:原始大資料大資料
- 大資料時代,如何做資料探勘與分析!大資料
- 大資料分析應用的九大領域大資料
- 資料分析與資料探勘 - 04科學計算
- R——助力大資料統計與分析大資料
- 大資料分析與雲技術結合大資料
- 大資料安全分析大資料
- 物聯網之智慧農業應用分析&大資料之資料探勘技術的應用大資料
- 雲資料庫HBase大資料儲存及實時分析場景應用解析資料庫大資料
- 大資料,大資料,大資料大資料
- 梳理資料需求,資料分析7大能力
- 大資料建模、分析、挖掘技術應用大資料
- 工業大資料應用場景分析大資料
- 【雲端大資料實戰】大資料誤區、大資料處理步驟分析大資料
- 淺談大資料、資料分析、資料探勘的區別!大資料
- 【工業大資料】工廠大資料之資料來源分析;如何挖掘並駕馭大資料的價值,成為“大資料企業”?大資料
- 電商運營與大資料分析大資料
- 大資料與熵:臨界分析大資料熵
- 資料模型與資料分析模型
- 大資料技術之資料採集篇大資料
- 大資料常見的資料分析思維大資料
- 雲端計算與大資料[4]大資料