談談大資料採集和常見問題

ITPUB社群發表於2022-12-21

大家好,我是峰哥,今天給大家講解一下大資料面試中對於資料採集部分的一些問題。

01、什麼是資料採集

資料採集是大資料的基石,不論是現在的網際網路公司,物聯網公司或者傳統的IT公司,每個業務流程環節都會產生大量的資料,同時使用者操作的日誌也會產生大量的資料,為了將這些結構化和非結構化的資料進行採集,我們必須要有一套完整的資料採集方案流程,為後續的資料分析應用提供資料基礎。

根據不同業務場景,對於資料採集的時效性要求也是不一樣的,一般分為離線資料採集和實時資料採集。

02離線資料採集

離線資料採集主要包括從資料庫中採集,如MySQL、Oracle、MongoDB等;從離線檔案採集,如外部系統資料。每天凌晨會抽取前一天的資料(T+1),對於維度資料一般採用每次全量採集,對於業務資料,為了提高採集效率,同時也為了保住業務資料庫的穩定性,採用每天增量採集,然後將T+1的資料合併成新的全量資料。

對於關係型資料庫,如MySQL,一般是有主從資料庫的,為了保住穩定和不影響主庫的查詢效能,我們一般抽取從庫資料。對於檔案資料抽取前需要先檢測檔案是否存在,源系統提供檔案的時候需要提供對應的校驗檔案,校驗檔案裡一般包含檔案的記錄數、欄位格式等資訊。採集到檔案後需要對檔案進行校驗,檔案完整的情況下才能繼續後續資料處理程式。

03、實時資料採集

實時資料採集主要是一些頁面日誌的採集,也就是我們常說的使用者行為分析資料。日誌採集一般有以下幾個步驟:資料埋點,資料上報,資料儲存。

  • 資料埋點:網站上線後一般會植入一段JS指令碼,使用者訪問頁面時,JS會收集當前頁面的一些資訊,使用者問的上下文資訊以及當前訪問的頁面業務相關資料。

  • 資料上報:JS執行完畢後,會將所有收集到的資訊拼裝到一個請求內,透過日誌請求將資料傳送到日誌伺服器,儲存為JSON檔案;一般情況下,在 JS 執行完成後就會立即向日志伺服器傳送訊息佇列中。

  • 資料儲存:儲存在磁碟上的檔案會部署資料採集元件比如Flume,將採集到的日誌資料傳送到HDFS進行儲存或者轉存到HBase進行儲存。訊息佇列的資料則可以直接消費落地到HDFS或者HBase進行儲存。

04、資料採集的問題

是不是所有的日誌資料都實時採集?

使用者的每個操作都會產生一個操作日誌,但並不是每生成一條日誌就實時上報至伺服器,而是在產生日誌後,先暫存在客戶端本地,再結合著相應的上報控制策略進行資料上報。其中上報策略主要指根據日誌的業務特性,資料的時效性,使用者的網路特性等等資訊設定不同的上報策略,有些日誌會因為其資料時效性的要求進行實時資料上報,而有些日誌則會在使用者啟動應用,或者間隔一段時間後將日誌上報上來。

總是找不到想要的埋點資料?

在實際業務資料採集中會發現每個模組的業務資料格式都是不一樣的。因此就需要設計一種日誌資料採集標準,可以針對特定的業務場景,制定通用的資料採集標識,研發人員在進行頁面埋點時,依據標準的資料採集標識規則進行埋點,從而收集業務的詳細資訊。這個標準需要產品經理、前端開發人員、資料開發人員、資料分析人員、資料運營人員等多方達成一致,確保後面產品展現、埋點開發、模型開發、資料分析和運營能夠正常開發、解析、統計分析資料。

如何對多個業務生成唯一標識?

在資料埋點中如何唯一確定使用者的身份一件很重要的工作,因為如果做不到使用者的唯一標識,那麼後續很多資料模型是無法構建的。所以在設計埋點標準時,一般會包含用的裝置ID和使用者ID,關於裝置ID安卓和IOS的方法也不一樣,大家可以搜尋相關資料();使用者ID,也就是我們常說的註冊賬號。

來自 “ 資料社 ”, 原文作者:資料社;原文連結:https://mp.weixin.qq.com/s/wquVbv30WzcTW_ZnxXz8Fg,如有侵權,請聯絡管理員刪除。

相關文章