我做大數(shù)據(jù)工作這三年
一、初來乍到
三年前,一鍋蓋頭小伙在女朋友的感召下,坐上了140.50塊的綠皮火車花了30多個(gè)小時(shí)到了上?;疖囌?。這是他20多年來第一次出省,然而等待他的是2個(gè)多小時(shí)的地鐵,加半個(gè)小時(shí)的公交。但是有女朋友的陪伴,這都不是事兒。
到上海前,在網(wǎng)上隨手投了幾個(gè)實(shí)習(xí)簡(jiǎn)歷,收到了兩個(gè)面試邀請(qǐng)。剛來第二天,就坐上早高峰的地鐵9號(hào)線去面試了……幸好沒被擠扁。
面試過程就是自己嘰里呱啦、意氣風(fēng)發(fā)地自我介紹了半天,似乎整個(gè)大學(xué)的經(jīng)歷都講完了,然后:
——問:“會(huì)python嗎?”;答:“剛學(xué)的”。
——問:“多久能來上班?”;答:“下周一?”,回:“這么快……”
相談甚歡,當(dāng)時(shí)怎能想到,這面試官就是三年來帶我成長(zhǎng)的leader呢。
后面就是HR來談了。
面完很開心,看看郵件還有個(gè)面試邀請(qǐng),算了不去了,就這家吧。對(duì)了,這家公司是干啥的來著,百度看看吧。
周末在公司300米內(nèi),迅速租了個(gè)600塊的床位,周一就開始干活啦。
二、實(shí)習(xí)生涯
實(shí)習(xí)接的第一個(gè)活兒,就是維護(hù)一個(gè)前輩留下的日志分析系統(tǒng),看別人的(包括看自己以前的)代碼真是一種**(你懂的)的心情。
后面用面向?qū)ο蟮乃枷胫貥?gòu)了下代碼,自我感覺清晰了很多,后來再看自己重構(gòu)的代碼又是一種**的心情。
當(dāng)時(shí)大數(shù)據(jù)已經(jīng)比較火了,這個(gè)日志分析系統(tǒng)大概就是時(shí)代更迭的產(chǎn)物。
從日志機(jī)下載日志再解析存入mysql,然后運(yùn)行sql生成統(tǒng)計(jì)指標(biāo),通過郵件發(fā)出來。
三、數(shù)據(jù)分析
實(shí)習(xí)了一個(gè)月,就回學(xué)校做畢設(shè)了。
實(shí)習(xí)過程中,HR問我畢業(yè)后愿意留在公司嗎?當(dāng)時(shí)情商和智商有些感人,竟然說自己還想去試試別的公司。后來談三方協(xié)議的時(shí)候,HR極力反對(duì),實(shí)習(xí)生留任一般都要實(shí)習(xí)6個(gè)月以上;leader竟然力挺我,想想我實(shí)習(xí)期內(nèi)留下的一個(gè)個(gè)bug,感激之情難以言表。
轉(zhuǎn)正之后,跟著leader做起了數(shù)據(jù)分析,開始了聊需求、找埋點(diǎn)、寫sql、做報(bào)表的分析師工作。那時(shí)候所說大數(shù)據(jù)還主要是面向分析,不直接提供業(yè)務(wù)所用的數(shù)據(jù);就算提供給業(yè)務(wù)使用,更新頻率也相當(dāng)?shù)汀?br/>數(shù)據(jù)分析,是大數(shù)據(jù)最普遍的一個(gè)應(yīng)用。
1.監(jiān)控產(chǎn)品發(fā)展情況。通過活躍、留存、營(yíng)收等指標(biāo)了解產(chǎn)品所處的階段,監(jiān)控產(chǎn)品的健康狀況,來支撐一些決策。
2.優(yōu)化產(chǎn)品。要新增一些功能時(shí),可以分析數(shù)據(jù)評(píng)估這個(gè)功能是否必要。當(dāng)功能上線后,可以通過數(shù)據(jù)衡量這個(gè)功能的表現(xiàn)情況。對(duì)于一些流程,可以分析用戶在流程中的轉(zhuǎn)化情況,針對(duì)性地進(jìn)行優(yōu)化。
3.優(yōu)化運(yùn)營(yíng)。產(chǎn)品運(yùn)營(yíng)人員就關(guān)注三件事情:拉新、促活、轉(zhuǎn)化。通過數(shù)據(jù)可以分析各個(gè)拉新渠道roi(投入產(chǎn)出比),以及拉新流程中的轉(zhuǎn)化率。促活和轉(zhuǎn)化,就得建立用戶畫像,分析用戶的喜好習(xí)慣。
總之就是增長(zhǎng)黑客那一套,指導(dǎo)思想就是讓數(shù)據(jù)指導(dǎo)行動(dòng)。
過程中還是有很多難點(diǎn)的:
1.尋找埋點(diǎn)、驗(yàn)證埋點(diǎn)就很難了,因?yàn)殚_發(fā)很可能漏掉埋點(diǎn)或埋點(diǎn)觸發(fā)時(shí)機(jī)不對(duì)等。
2.指標(biāo)做出來后,需求方很可能找其他的數(shù)據(jù)來源作對(duì)比,數(shù)據(jù)可能對(duì)不上;指標(biāo)波動(dòng)還要花費(fèi)很多時(shí)間查找原因。
3.報(bào)表越做越多,如何將這些報(bào)表整理成體系就很重要了。
4.分析所依賴的數(shù)據(jù)倉(cāng)庫(kù),直接影響著開發(fā)報(bào)表的效率。
最終在leader的帶領(lǐng)下,通過數(shù)據(jù)分析,了解了公司很多數(shù)據(jù),也熟悉了整個(gè)大數(shù)據(jù)平臺(tái),學(xué)到了如何應(yīng)用數(shù)據(jù)指導(dǎo)自己行動(dòng)。
四、數(shù)據(jù)開發(fā)&數(shù)據(jù)倉(cāng)庫(kù)
數(shù)據(jù)開發(fā)就是生產(chǎn)數(shù)據(jù),原料還是數(shù)據(jù),不過是比較雜亂的數(shù)據(jù),我們就精煉這些數(shù)據(jù),產(chǎn)出價(jià)值更高的數(shù)據(jù)。
4.1數(shù)據(jù)接入
首先數(shù)據(jù)怎么來到大數(shù)據(jù)平臺(tái)呢,就是數(shù)據(jù)接入的部分。可以直接ftp傳過來,可以通過消息隊(duì)列接過來,如果是數(shù)據(jù)庫(kù)可以連接數(shù)據(jù)庫(kù)抽取過來,當(dāng)然還要考慮怎么抽取,抽過來怎么放,萬一抽取失敗怎么搞……等各種問題。
這里記錄幾個(gè)關(guān)于抽取數(shù)據(jù)庫(kù)比較典型的問題:
1.數(shù)據(jù)量少的話,就直接全量抽??;
2.數(shù)據(jù)量多就得增量抽取,增量如何進(jìn)行劃分;
3.抽過來如何進(jìn)行合并,如何建立歷史快照;
4.刪除的數(shù)據(jù)怎么同步;
5.如果要分布式并行抽取,分區(qū)字段用哪個(gè),怎么進(jìn)行分區(qū)。
4.2數(shù)據(jù)倉(cāng)庫(kù)
數(shù)據(jù)怎么存儲(chǔ)加工呢,就需要按照數(shù)據(jù)加工的過程水平進(jìn)行分層:原始數(shù)據(jù)層,明細(xì)數(shù)據(jù)層,聚會(huì)數(shù)據(jù)層,應(yīng)用數(shù)據(jù)層。每一層都有不同的作用,越往上數(shù)據(jù)更能直接產(chǎn)生價(jià)值,這樣能更清晰統(tǒng)一。當(dāng)然數(shù)據(jù)多了水平劃分是不夠的,還需要按照內(nèi)容的不同劃分不同的領(lǐng)域。數(shù)據(jù)維度復(fù)雜了,還要按照星型模型、雪花模型繼續(xù)分拆。
4.3數(shù)據(jù)開發(fā)
數(shù)據(jù)開發(fā)就在數(shù)據(jù)倉(cāng)庫(kù)中進(jìn)行工作,在自己負(fù)責(zé)的領(lǐng)域生產(chǎn)、精煉數(shù)據(jù),結(jié)合數(shù)據(jù)和業(yè)務(wù)建立合理的數(shù)據(jù)模型。
4.4數(shù)據(jù)管理
數(shù)據(jù)越來越多,又要涉及如何去管理,得給它建立生命周期模型,多久不用的數(shù)據(jù)該刪除還是壓縮儲(chǔ)存;對(duì)于數(shù)據(jù)表之間的關(guān)系,又得建立數(shù)據(jù)血緣進(jìn)行管理,以免隨便改個(gè)數(shù)據(jù)導(dǎo)致下游的表全部出錯(cuò);還有數(shù)據(jù)質(zhì)量,又該如何去監(jiān)控管理;數(shù)據(jù)的權(quán)限,又要怎么去保證數(shù)據(jù)安全。
五、數(shù)據(jù)平臺(tái)
接下來就是技術(shù)平臺(tái)了,如何給上面所述提供全面的技術(shù)支持呢。
5.1工作流平臺(tái)
數(shù)據(jù)的開發(fā)程序都是運(yùn)行時(shí)間比較長(zhǎng)的任務(wù)。如何去管理調(diào)度這些任務(wù)就是個(gè)問題。
1.任務(wù)的調(diào)度與監(jiān)控,怎么讓它在規(guī)定時(shí)間運(yùn)行起來,如何知道它是否運(yùn)行成功,失敗了怎么辦。
2.任務(wù)之間相互依賴的關(guān)系如何去配置,上游任務(wù)跑掛了還要繼續(xù)跑嗎。
3.任務(wù)一起跑太多又會(huì)給機(jī)器造成壓力,應(yīng)該如何去控制任務(wù)的并行度。
沒錯(cuò),自從負(fù)責(zé)了工作流平臺(tái),常常半夜接到報(bào)警電話,睡夢(mèng)中爬起來修bug。然而還是免不了會(huì)出問題,那么第二天其他同事基本就干不了活了。
5.2計(jì)算平臺(tái)
就是用什么工具來進(jìn)行數(shù)據(jù)開發(fā)呢。什么kafka、spark、hive、flink通通搞起來,要讓同事們用得開心、用得爽,基礎(chǔ)的代碼封裝起來,該有的工具加起來,跑得慢的任務(wù)優(yōu)化起來。
5.3服務(wù)大眾
數(shù)據(jù)平臺(tái)的工作就是,公共的東西要負(fù)責(zé),沒人維護(hù)的東西也要負(fù)責(zé)。包括但不限于代碼框架、公用函數(shù)庫(kù)、公用數(shù)據(jù)……
六、總結(jié)
洋洋灑灑寫了這么多有的沒的,算是對(duì)我這工作三年的總結(jié)吧。習(xí)慣了人生以三年做階段劃分,雖說不同階段都會(huì)去慢慢建立起自己熟悉的環(huán)境,但階段的切換還是會(huì)有些懷念與不舍、迷茫與恐懼、興奮與期待。
說好的,每一步都算數(shù)。
“科技創(chuàng)新2030”是按照《國(guó)家創(chuàng)新驅(qū)動(dòng)發(fā)展戰(zhàn)略綱要》和國(guó)家“十三五”規(guī)劃綱要的要求,面向2030年部署的一批體現(xiàn)國(guó)家戰(zhàn)略意圖的重大項(xiàng)目。力爭(zhēng)到2030年在航空發(fā)動(dòng)機(jī)及燃?xì)廨啓C(jī)、深??臻g站、量子通信與量子計(jì)算、腦科學(xué)與類腦研究、國(guó)家網(wǎng)絡(luò)空間安全、深空探測(cè)及空間飛行器在軌服務(wù)與維護(hù)系統(tǒng)、種業(yè)自主創(chuàng)新、煤炭清潔高效利用、智能電網(wǎng)、天地一體化信息網(wǎng)絡(luò)、大數(shù)據(jù)、智能制造和機(jī)器人、重點(diǎn)新材料研發(fā)及應(yīng)用、京津冀環(huán)境綜合治理、健康保障、新一代人工智能等16個(gè)重點(diǎn)方向率先突破。