大資料-數倉學習總結與分享
學習大資料的契機
原因
在學習之前的是一直在幹java開發的,但是手頭上有個比較大的專案,本來是到9月底的樣子就應該結束的,但後面需求變更,導致系統需要大改,之前的那批人也都走的差不多了(幾個團隊一起開發),所以到後面系統的整體架構的任務就交到我手上來了。
剛開始還好,慢慢改整體邏輯架構,其中從其他人程式碼中也學到了很多東西,可是過了一個來月的開發週期,11月的時候,也開發的差不多了,後面很多都是簡單的邏輯處理,而且寫得我很安逸,幾乎遇不到什麼問題了,這個感覺很不爽,然後優化完一些sql,寫了一些非同步編排介面,但是還是很安逸,嘗試優化程式碼架構,可是優化了部分覺得很多是重複工作,於是想學習一些新的東西了;
找資料階段
所以我開始從晚上找資料,然後是在b站上面看到尚矽谷發了很多新的視訊,hive3.1.2、spark3、數倉3.0等,然後就下決心開了大資料學習, 我從朋友那裡借來穀粒學院的賬號(這裡面的視訊在b站上大多數都有,只是在b站上看容易分心去看彈幕,我是喜歡開彈幕的那種),然後開始學習,從hadoop開始,大概學到一半,專案又進行迭代升級,我又又又去開發了,估計有三週左右的時間,天天加班,然後學習又停滯了,大概是快11月底的時候,我才狠下心來跟負責人說,我不想寫程式碼了,可以做做運維,然後就交給其他人去寫程式碼了,我只要複製指導一下就行;
學習週期
首先是根據資料文件+視訊很快的過了一遍hadoop剩下的,把map、reduce那個階段的東西學習了一下,然後就開始學習hive,關於hive-sql那裡的很多東西跟sql語法很像,所以很多東西我沒看,然後看了下數倉需要的技術點,發現很多東西之前都聽過,所以直接開幹,搞起了數倉的專案。
數倉的概念
數倉倉庫(data warehouse):是為企業所有決策制定過程,提供所有系統資料支援的戰略集合。通過資料倉儲的分析可以幫助企業,改進業務流程、控制成本、提高產品質量等。
資料倉儲並不是所有資料的存放地,而是為資料最終最終目的地做準備,這些準備包括:清洗、轉義、分類、重組、合併、拆分、統計等等。
其大致流程:
專案的需求及架構
需求分析
整個數倉參考尚矽谷-穀粒學院的課程設計:
1. 使用者行為的日誌採集(通過設定埋點的方式)
2. 業務資料採集的平臺搭建(將mysql中的資料匯入到hdfs)
3. 資料倉儲的維度建模(ods、dwd、dws、dwt、ads)
4. 分析(裝置、使用者、地區)等電商的核心主題,需要有近100個指標支援
5. 採用即席查詢工具,隨時進行指標分析(亞秒級、秒級的大資料量查詢)
6. 整個叢集系統的任務排程(特定的任務不需要任務去每天重複操作)
7. 叢集的整體效能監控,並在異常的時候進行報警。
8. 後設資料管理
專案架構
一、技術選型
二、系統資料流程設計
三、系統技術版本選擇
四、伺服器選型
五、叢集規劃
資料來源
資料埋點
- 主流埋點方式(瞭解)
目前主流的埋點方式,有程式碼埋點(前端/後端)、視覺化埋點、全埋點三種。
程式碼埋點是通過呼叫埋點 SDK 函式,在需要埋點的業務邏輯功能位置呼叫介面,上報埋點資料。例如,我們對頁面中的某個按鈕埋點後,當這個按鈕被點選時,可以在這個按鈕對應的 OnClick 函式裡面呼叫 SDK 提供的資料傳送介面,來傳送資料。
視覺化埋點只需要研發人員整合採集 SDK,不需要寫埋點程式碼,業務人員就可以通過訪問分析平臺的“圈選”功能,來“圈”出需要對使用者行為進行捕捉的控制元件,並對該事件進行命名。圈選完畢後,這些配置會同步到各個使用者的終端上,由採集 SDK 按照圈選的配置自動進行使用者行為資料的採集和傳送。
全埋點是通過在產品中嵌入 SDK,前端自動採集頁面上的全部使用者行為事件,上報埋點資料,相當於做了一個統一的埋點。然後再通過介面配置哪些資料需要在系統裡面進行分析。
- 埋點資料日誌結構
我們的日誌結構大致可分為兩類,一是普通頁面埋點日誌,二是啟動日誌。
普通頁面日誌結構如下,每條日誌包含了,當前頁面的頁面資訊,所有事件(動作)、所有曝光資訊以及錯誤資訊。除此之外,還包含了一系列公共資訊,包括裝置資訊,地理位置,應用資訊等,即下邊的 common 欄位。
- 埋點資料上報時機
埋點資料上報時機包括兩種方式。
方式一,在離開該頁面時,上傳在這個頁面發生的所有事情(頁面、事件、曝光、錯誤等)。優點,批處理,減少了伺服器接收資料壓力。缺點,不是特別及時。
方式二,每個事件、動作、錯誤等,產生後,立即傳送。優點,響應及時。缺點,對伺服器接收資料壓力比較大
業務資料
一般就是資料庫裡面的資料
總結
上面是整個資料倉儲的設計,從概念、需求、技術選型等著手考慮,完全適用於中小型企業的實際生產,接下來幾篇部落格會詳細講解整個數倉搭建過程;
感謝大家閱、互相學習;
感謝尚矽谷提供的學習資料;
有問題評論或者發郵箱;
gitee:很多程式碼倉庫;
1449697757@qq.com
相關文章
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 好程式設計師大資料學習路線分享MapReduce全流程總結程式設計師大資料
- 分享學習大資料的方法大資料
- 大資料如何學習,大資料工程師學習經驗分享大資料工程師
- 資料結構學習總結--圖資料結構
- JAVA基礎學習-數字與字串學習總結Java字串
- 資料結構與演算法學習總結--遞迴資料結構演算法遞迴
- 從BAT大資料工程師那裡總結的大資料學習方法BAT大資料工程師
- 數論學習總結
- 《學習JavaScript資料結構與演算法》閱讀總結JavaScript資料結構演算法
- 資料倉儲手冊總結
- 大資料教程分享Actor學習筆記大資料筆記
- 大資料學習路線指南(最全知識點總結)大資料
- 資料結構 其五 樹與二叉樹學習總結資料結構二叉樹
- Java資料結構之Map學習總結Java資料結構
- Java資料結構之Set學習總結Java資料結構
- 數論學習總結2
- 好程式設計師大資料學習路線Hbase總結程式設計師大資料
- 資料倉儲與大資料的區別大資料
- Redis學習總結和相關資料Redis
- 3/25數倉面試總結面試
- sqlldr的學習與總結SQL
- 大資料與深度學習區別大資料深度學習
- 資料結構學習(C++)——圖(總結) (轉)資料結構C++
- 資料結構學習(C++)——樹(總結) (轉)資料結構C++
- 好題——數學與資料結構資料結構
- Lync學習資料分享
- LEX與YACC學習資料連結
- 深入學習之連結與總結
- 大資料學習路線分享Master的jps大資料AST
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 讀資料湖倉09讀後總結與感想兼導讀
- 資料倉儲Build The Data Warehouse(William H.Inmon)學習筆記 --- 第八章、外部資料/非結構化資料與資料倉儲UI筆記
- 系統學習大資料需要學習哪些內容,五年大資料工程師經驗分享大資料工程師
- 大資料學習資料大資料
- 《大話資料結構》總結資料結構
- 吐血總結|史上最全的MySQL學習資料!!MySql
- 大資料到底怎麼學:資料科學概論與大資料學習誤區大資料資料科學