
面試題-關于大數(shù)據(jù)量的分布式處理
題目:生產(chǎn)系統(tǒng)每天會產(chǎn)生一個日志文件F,數(shù)據(jù)量在5000W行的級別。文件F保存了兩列數(shù)據(jù),一列是來源渠道,一列是來源渠道上的用戶標識。文件F用來記錄當日各渠道上的所有訪問用戶,每訪問一次,記錄一條。
請問如何快速計算出各渠道上新增的用戶?
問題分析:首先本次面試的是有關于分布式數(shù)據(jù)處理以及數(shù)據(jù)分析的職位,所以相關的面試題目可能會偏向于使用分布式的思想去解決。但無奈本人當時反應太慢,實在沒向分布式處理方向思考。
方案一:
本題最直觀的一個處理方法就是,直接拿著當日新增的5000W條訪問記錄一條一條的去匹配歷史訪問用戶。若存在歷史訪問記錄,則忽略;若不存在訪問記錄,則保存為新增記錄。很明顯,假若歷史訪問用戶有2億條記錄,則需要和2億條數(shù)據(jù)比較5000W次。比較次數(shù)可想而知。
由于本人一直在做基于數(shù)據(jù)庫的數(shù)據(jù)處理工作,很容易就想到將歷史數(shù)據(jù)保存在數(shù)據(jù)庫的一張表中,并對來源渠道和用戶標識這兩個字段建立索引,然后遍歷日志文件F(5000W次)。根據(jù)日志文件F中的每一行去匹配數(shù)據(jù)庫中的歷史訪問記錄。由于歷史數(shù)據(jù)表有索引,單次查詢的速度也非???。但是需要5000W次的數(shù)據(jù)庫查詢,很明顯效率低下。
方案二:
既然多次單一查詢無法滿足要求,于是可以先通過一種數(shù)據(jù)導入技術將當日新增數(shù)據(jù)導入到數(shù)據(jù)庫的另一張表中,并和歷史數(shù)據(jù)做左外關聯(lián)。若能關聯(lián)成功,則表示此用戶已存在;若關聯(lián)失敗,則表示此用戶不存在。
此方案暫且不說5000W條記錄的大表與2億條記錄的大表關聯(lián)效率有多高以及使用到的數(shù)據(jù)庫緩沖區(qū)的資源有多少,單就5000W條訪問記錄導入數(shù)據(jù)庫表,都是一個不小的時間花費。
方案三:
很明顯,面試時方案二的回答并未達到面試官的預期,最初被遺憾的PASS掉。一家很有潛力,自己很看好的公司,并計劃做為自己未來發(fā)展方向的職位,就這樣丟下我,揚長而去了。
這幾天又看了下分布式相關的介紹,突然想到這道題。一下子醒悟過來,其實還是因為對題目要考察的點分析得不夠透徹。當時以為只是僅僅考數(shù)據(jù)處理效率的一個題目,其實考的是一種將復雜問題拆分為簡單問題的拆分思想。了解到這一層,一種新的方式立馬在腦海中浮現(xiàn)出來。具體如下:
假如現(xiàn)在有N(N>=2)個存儲塊,并存在一個函數(shù)f(來源渠道,用戶標識),對于給定的一組(來源渠道,用戶標識),總能將其分發(fā)到一個固定的存儲塊內(nèi)。那么可以使用此函數(shù)將5000W行訪問記錄盡量均勻的分發(fā)至N個存儲塊上,并同時使用此函數(shù)將歷史訪問記錄也分發(fā)至這些存儲塊上。由于相同的一組記錄,肯定會被分配至同一個存儲塊,所以比較時,只需要分別比較各個存儲塊上當日新增記錄與歷史訪問用戶,然后將N個存儲塊上比較的結果匯總,即可得到最終結果。
假設歷史訪問用戶數(shù)據(jù)已通過函數(shù)f(來源渠道,用戶標識)被分發(fā)至了N個歷史文件H1、H2、…、HN。則詳細處理步驟如下:
1、將F中的內(nèi)容使用函數(shù)f(來源渠道,用戶標識),分發(fā)至文件F1、F2、…、FN內(nèi)。(可開M(M>=2)個并行,且若N-M越大,同時向同一文件寫入數(shù)據(jù)的概率越?。?
2、將文件F1、F2、…、FN內(nèi)的訪問記錄去重。(可開N個并行分別處理對應的N個文件)。
3、將文件Fn(1=<n<=N)去重后的結果與對應的歷史文件Hn比較得出新增用戶結果Rn。(可開N個并行分別處理對應的N個文件且當N足夠大時,實際要處理數(shù)據(jù)的量級就會相當?。?
4、合并第3步得到的結果R1、R2、…、RN即可得到當日新增用戶。(可并行)
5、為使歷史數(shù)據(jù)文件H1、H2、…、HN中的數(shù)據(jù)最全,將結果R1、R2、…、RN分別寫入對應的歷史文件中。(可并行)
本方案主要有以下優(yōu)點:
1、數(shù)據(jù)的分發(fā)、處理、合并都可并行處理,明顯提高了處理效率。
2、由于每個存儲塊上的新增數(shù)據(jù),只需要與它對應存儲塊上的歷史數(shù)據(jù)比較即可,大大減少了比較次數(shù)。(對于當日每一條記錄來說,都只需要與大約歷史的N分之一條數(shù)據(jù)去比較)
3、基本不需要考慮歷史全量數(shù)據(jù)的保存及獲取問題。
本方案缺點:
1、處理方案明顯變的復雜許多,不僅需要處理數(shù)據(jù)的分發(fā),處理,還需要一個并行的快速收集方法。
2、可能需要多臺服務器并行處理。
本方案難點:
1、一個穩(wěn)定(對于相同的一組來源渠道和用戶標識,必定會被分發(fā)至同一存儲塊)、快速(根據(jù)一條來源渠道和用戶標識數(shù)據(jù),可以快速的計算出它將要被分發(fā)至的存儲塊)、均勻(當日新增數(shù)據(jù)及歷史數(shù)據(jù)都能盡量均勻的被分發(fā)至N個存儲塊,最理想的情況是每個存儲塊上分發(fā)到的數(shù)據(jù)都是總數(shù)據(jù)的N分之一)的分發(fā)函數(shù)至關重要。
2、如何分發(fā)、并行處理及匯總數(shù)據(jù)。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03