今天呢,主要回顧這兩年來,在大數據行業公司從事大數據類的前端開發的工作。最近剛剛換了壹份工作,把我的經驗稍作總結分享給大家,有什麽建議大家在評論區踴躍。 謝謝。
今天的主題,主要是從大數據開發的角度,到大數據治理的必要性,再到圖形化建模的暢想,最後在數據質量的把關,然後到大數據可視化的應用,博主總結兩年的見聞,和我學習的成果,也不知理解有無偏差吧,希望大家能給出建議。
大數據開發
大數據開發,有幾個階段:
1.數據采集原始數據
2.數據匯聚經過清洗合並的可用數據
3.數據轉換和映射經過分類,提取的專項主題數據
4.數據應用 提供api 智能系統 應用系統等
數據采集
數據采集有線上和線下兩種方式,線上壹般通過爬蟲、通過抓取,或者通過已有應用系統的采集,在這個階段,我們可以做壹個大數據采集平臺,依托自動爬蟲(使用python或者nodejs制作爬蟲軟件),ETL工具、或者自定義的抽取轉換引擎,從文件中、數據庫中、網頁中專項爬取數據,如果這壹步通過自動化系統來做的話,可以很方便的管理所有的原始數據,並且從數據的開始對數據進行標簽采集,可以規範開發人員的工作。並且目標數據源可以更方便的管理。
數據采集的難點在於多數據源,例如mysql、postgresql、sqlserver 、 mongodb 、sqllite。還有本地文件、excel統計文檔、甚至是doc文件。如何將他們規整的、有方案的整理進我們的大數據流程中也是必不可缺的壹環。
數據匯聚
數據的匯聚是大數據流程最關鍵的壹步,妳可以在這裏加上數據標準化,妳也可以在這裏做數據清洗,數據合並,還可以在這壹步將數據存檔,將確認可用的數據經過可監控的流程進行整理歸類,這裏產出的所有數據就是整個公司的數據資產了,到了壹定的量就是壹筆固定資產。
數據匯聚的難點在於如何標準化數據,例如表名標準化,表的標簽分類,表的用途,數據的量,是否有數據增量?,數據是否可用? 需要在業務上下很大的功夫,必要時還要引入智能化處理,例如根據內容訓練結果自動打標簽,自動分配推薦表名、表字段名等。還有如何從原始數據中導入數據等。
數據轉換和映射
經過數據匯聚的數據資產如何提供給具體的使用方使用?在這壹步,主要就是考慮數據如何應用,如何將兩個?三個?數據表轉換成壹張能夠提供服務的數據。然後定期更新增量。
經過前面的那幾步,在這壹步難點並不太多了,如何轉換數據與如何清洗數據、標準數據無二,將兩個字段的值轉換成壹個字段,或者根據多個可用表統計出壹張圖表數據等等。
數據應用
數據的應用方式很多,有對外的、有對內的,如果擁有了前期的大量數據資產,通過restful API提供給用戶?或者提供流式引擎 KAFKA 給應用消費? 或者直接組成專題數據,供自己的應用查詢?這裏對數據資產的要求比較高,所以前期的工作做好了,這裏的自由度很高。
總結:大數據開發的難點
大數據開發的難點主要是監控,怎麽樣規劃開發人員的工作?開發人員隨隨便便采集了壹堆垃圾數據,並且直連數據庫。 短期來看,這些問題比較小,可以矯正。 但是在資產的量不斷增加的時候,這就是壹顆定時炸彈,隨時會引爆,然後引發壹系列對數據資產的影響,例如數據混亂帶來的就是數據資產的價值下降,客戶信任度變低。
如何監控開發人員的開發流程?
答案只能是自動化平臺,只有自動化平臺能夠做到讓開發人員感到舒心的同時,接受新的事務,拋棄手動時代。
這就是前端開發工程師在大數據行業中所占有的優勢點,如何制作交互良好的可視化操作界面?如何將現有的工作流程、工作需求變成壹個個的可視化操作界面? 可不可以使用智能化取代壹些無腦的操作?
從壹定意義上來說,大數據開發中,我個人認為前端開發工程師占據著更重要的位置,僅次於大數據開發工程師。至於後臺開發,系統開發是第三位的。好的交互至關重要,如何轉換數據,如何抽取數據,壹定程度上,都是有先人踩過的坑,例如kettle,再例如kafka,pipeline ,解決方案眾多。關鍵是如何交互? 怎麽樣變現為可視化界面? 這是壹個重要的課題。
現有的各位朋友的側重點不同,認為前端的角色都是可有可無,我覺得是錯誤的,後臺的確很重要,但是後臺的解決方案多。 前端實際的地位更重要,但是基本無開源的解決方案,如果不夠重視前端開發, 面臨的問題就是交互很爛,界面爛,體驗差,導致開發人員的排斥,而可視化這塊的知識點眾多,對開發人員的素質要求更高。
大數據治理
大數據治理應該貫穿整個大數據開發流程,它有扮演著重要的角色,淺略的介紹幾點:
數據血緣
數據質量審查
全平臺監控
數據血緣
從數據血緣說起,數據血緣應該是大數據治理的入口,通過壹張表,能夠清晰看見它的來龍去脈,字段的拆分,清洗過程,表的流轉,數據的量的變化,都應該從數據血緣出發,我個人認為,大數據治理整個的目標就是這個數據血緣,從數據血緣能夠有監控全局的能力。
數據血緣是依托於大數據開發過程的,它包圍著整個大數據開發過程,每壹步開發的歷史,數據導入的歷史,都應該有相應的記錄,數據血緣在數據資產有壹定規模時,基本必不可少。
數據質量審查
數據開發中,每壹個模型(表)創建的結束,都應該有壹個數據質量審查的過程,在體系大的環境中,還應該在關鍵步驟添加審批,例如在數據轉換和映射這壹步,涉及到客戶的數據提供,應該建立壹個完善的數據質量審查制度,幫助企業第壹時間發現數據存在的問題,在數據發生問題時也能第壹時間看到問題的所在,並從根源解決問題,而不是盲目的通過連接數據庫壹遍壹遍的查詢sql。
全平臺監控
監控呢,其實包含了很多的點,例如應用監控,數據監控,預警系統,工單系統等,對我們接管的每個數據源、數據表都需要做到實時監控,壹旦發生殆機,或者發生停電,能夠第壹時間電話或者短信通知到具體負責人,這裏可以借鑒壹些自動化運維平臺的經驗的,監控約等於運維,好的監控提供的數據資產的保護也是很重要的。
大數據可視化
大數據可視化不僅僅是圖表的展現,大數據可視化不僅僅是圖表的展現,大數據可視化不僅僅是圖表的展現,重要的事說三遍,大數據可視化歸類的數據開發中,有壹部分屬於應用類,有壹部分屬於開發類。
在開發中,大數據可視化扮演的是可視化操作的角色, 如何通過可視化的模式建立模型? 如何通過拖拉拽,或者立體操作來實現數據質量的可操作性? 畫兩個表格加幾個按鈕實現復雜的操作流程是不現實的。
在可視化應用中,更多的也有如何轉換數據,如何展示數據,圖表是其中的壹部分,平時更多的工作還是對數據的分析,怎麽樣更直觀的表達數據?這需要對數據有深刻的理解,對業務有深刻的理解,才能做出合適的可視化應用。
智能的可視化平臺
可視化是可以被再可視化的,例如superset,通過操作sql實現圖表,有壹些產品甚至能做到根據數據的內容智能分類,推薦圖表類型,實時的進行可視化開發,這樣的功能才是可視化現有的發展方向,我們需要大量的可視化內容來對公司發生產出,例如服裝行業,銷售部門:進貨出貨,顏色搭配對用戶的影響,季節對選擇的影響 生產部門:布料價格走勢? 產能和效率的數據統計? 等等,每壹個部門都可以有壹個數據大屏,可以通過平臺任意規劃自己的大屏,所有人每天能夠關註到自己的領域動向,這才是大數據可視化應用的具體意義。
寫在最後
洋洋灑灑寫了很多,對我近兩年的所見所聞所學所想進行了壹些總結,有些童鞋會問,不是技術麽?為什麽沒有代碼? 博主要說,代碼博主要學的,要寫的,但是與工作無關,代碼是我個人的技能,個人傍身,實現個人想法的重要技能。 但是,代碼與業務的關系不大,在工作中,懂業務的人代碼寫的更好,因為他知道公司想要什麽。 如果妳業務很差,那也沒關系,妳代碼好就行了呀,根據別人的交代幹活,也是很不錯的。技術和業務是相輔相成的,稍後博主總結代碼的精進。
寫完了,焦慮壹絲未少,我的代碼規範性不夠,目前技術棧js、java、nodejs、python 。
主業js熟練度80%吧,正在研究阮壹峰的es6(看的差不多)和vuejs的源碼(有點擱淺),vuejs算是中等,css和布局方面可以說還可以,另外d3.js,go.js都是處於會用,能幹活。 nodejs呢,express和koa無問題,看過壹些express的源代碼,還寫過兩個中間件。
java、python都處於能做項目的程度,目前也不想抽很多精力去深入它們,就想要保持在想用能用的地步吧。
未來的幾年,努力工作,多學學人工智能、大數據開發的知識,未來這塊應該還有壹些熱度的吧。
最後,和大家***勉,更希望大家能給壹些規劃建議,三人行,必有我師焉。