後端技術雜談12:捋一捋大數據研發的基本概念
- 2019 年 12 月 10 日
- 筆記
本文作者:[木東居士]
轉自個人主頁:http://www.mdjs.info
本系列文章將整理到我在GitHub上的《Java面試指南》倉庫,更多精彩內容請到我的倉庫里查看
https://github.com/h2pl/Java-Tutorial 喜歡的話麻煩點下Star哈
文章將同步到我的個人部落格:
www.how2playlife.com
該系列博文會介紹常見的後端技術,這對後端工程師來說是一種綜合能力,我們會逐步了解搜索技術,雲計算相關技術、大數據研發等常見的技術喜提,以便讓你更完整地了解後端技術棧的全貌,為後續參與分散式應用的開發和學習做好準備。
如果對本系列文章有什麼建議,或者是有什麼疑問的話,也可以關注公眾號【Java技術江湖】聯繫我,歡迎你參與本系列博文的創作和修訂。
0x00 前言
你了解你的數據嗎?
前幾天突然來了點靈感,想梳理一下自己對數據的理解,因此便有了這篇部落格或者說這系列部落格來聊聊數據。
數據從業者有很多,比如說數據開發工程師、數據倉庫工程師、數據分析師、數據挖掘工程師、數據產品經理等等,不同崗位的童鞋對數據的理解有很大的不一樣,而且側重點也不同。那麼,是否有一些數據相關的基礎知識是所有數據從業者都值得了解的?不同的崗位對數據的理解又有多大的不同?數據開發工程師是否有必要去了解數據分析師是如何看待數據的?
本系列部落格會嘗試去學習、挖掘和總結這些內容,在數據的海洋中一起裝x一起飛。
0x01 數據?數據!
開篇先上幾個問題:
- 你知道自己的系統數據接入量是多少嗎?
- 你知道數據的分布情況嗎?
- 你知道自己常用的數據有什麼隱藏的坑嗎?
如果你對前面說的問題有不太了解的,那麼我們就可以在以後的內容中一起愉快地交流和探討。如果前面說的問題你的回答都是 「Yes」,那麼我還是會嘗試用新的問題來留住你。比如說:
- 既然你知道系統的數據接入量,那你知道每天的數據量波動嗎?波動量在多大範圍內是正常情況?
- 你知道的數據分布情況是什麼樣子的?除了性別、年齡和城市的分布,還有什麼分布?
- 在偌大的數據倉庫中,哪些數據被使用最多,哪些數據又無人問津,這些你了解嗎?
- 在最常用的那批數據中,有哪些核心的維度?有相同維度的兩個表之間的數據口徑是否也一樣?
假設你對上面的問題有稍許困惑或者感興趣,我們正式開始對數據的認知之旅。
0x02 概覽
現在,我們粗略地將數據從業者分為數據集群運維、數據開發工程師、數據倉庫工程師、數據分析師、數據挖掘工程師和數據產品經理,這一小節先起一個引子來大致說明不同崗位對數據的了解是不同的,後文會詳細地說明細節內容。
首先要說明的是,在工作中數據相關的職位都是有很多重合的,很難一刀切區分不同崗位的職責,比如說數據開發工程師本身就是一個很大的概念,他可以做數據接入、數據清洗、數據倉庫開發、數據挖掘演算法開發等等,再比如說數據分析師,很多數據分析師既要做數據分析,又要做一些提數的需求,有時候還要自己做各種處理。
公司的數據團隊越大,相應的崗位職責就會越細分,反之亦然。在這裡我們姑且用數據開發工程師和數據倉庫工程師做對比來說明不同職責的同學對數據理解的側重點有什麼不同。我們假設數據開發工程師側重於數據的接入、存儲和基本的數據處理,數據倉庫工程師側重於數據模型的設計和開發(比如維度建模)。
- 數據開發工程師對數據最基本的了解是需要知道數據的接入狀態,比如說每天總共接入多少數據,整體數據量是多大,接入的業務有多少,每個業務的接入量多大,多大波動範圍是正常?然後還要對數據的存儲周期有一個把握,比如說有多少表的存儲周期是30天,有多少是90天?集群每日新增的存儲量是多大,多久後集群存儲會撐爆?
- 數據倉庫工程師對上面的內容也要有一定的感知力,但是會有所區別,比如說,數據倉庫工程師會更關注自己倉庫建模中用到業務的數據狀態。然後還需要知道終點業務的數據分布,比如說用戶表中的年齡分布、性別分布、地域分布等。除此之外還應關注數據口徑問題,比如說有很多份用戶資料表,每張表的性別取值是否都是:男、女、未知,還是說會有用數值類型:1男、2女、0未知。
- 然後數據開發工程師對數據異常的側重點可能會在今天的數據是否延遲落地,總量是否波動很大,數據可用率是否正常。
- 數據倉庫工程師對數據異常的側重點則可能是,今天落地的數據中性別為 0 的數據量是否激增(這可能會造成數據傾斜),某一個關鍵維度取值是否都為空。
上面的例子可能都會在一個數據品質監控系統中一起解決,但是我們在這裡不討論系統的設計,而是先有整體的意識和思路。
0x03 關於內容
那麼,後續部落格的內容會是什麼樣子的呢?目前來看,我認為會有兩個角度:
- 拋開崗位的區分度,從基本到高級來闡釋對數據的了解。比如說數據分布,最基本的程度只需要知道每天的接入量;深一點地話需要了解到其中重點維度的分布,比如說男女各多少;再深一點可能要需要知道重點維度的數據值分布,比如說年齡分布,怎樣來合理劃分年齡段,不同年齡段的比例。
- 每個崗位會關注的一些側重點。這點筆者認為不太好區分,因為很多崗位重合度比較高,但是筆者會嘗試去總結,同時希望大家一起來探討這個問題。
0xFF 總結
本篇主要是拋出一些問題,後續會逐步展開地細說數據從業者對數據理解。其實最開始我想用「數據敏感度」、「數據感知力」這類標題,但是感覺這種概念比較難定義,因此用了比較口語化的標題。
筆者認為,在數據從業者的職業生涯中,不應只有編程、演算法和系統,還應有一套數據相關的方法論,這套方法論會來解決某一領域的問題,即使你們的系統從Hadoop換到了Spark,數據模型從基本的策略匹配換到了深度學習,這些方法論也依舊會伴你整個職業生涯。因此這系列部落格會嘗試去學習、挖掘和總結一套這樣的方法論,與君共勉。