我做大数据工作这三年

一、初来乍到

三年前,一锅盖头小伙在女朋友的感召下,坐上了140.50块的绿皮火车花了30多个小时到了上海火车站。这是他20多年来第一次出省,然而等待他的是2个多小时的地铁,加半个小时的公交。但是有女朋友的陪伴,这都不是事儿。


我做大数据工作这三年


到上海前,在网上随手投了几个实习简历,收到了两个面试邀请。刚来第二天,就坐上早高峰的地铁9号线去面试了……幸好没被挤扁。

面试过程就是自己叽里呱啦、意气风发地自我介绍了半天,似乎整个大学的经历都讲完了,然后:

——问:“会python吗?”;答:“刚学的”。

——问:“多久能来上班?”;答:“下周一?”,回:“这么快……”

相谈甚欢,当时怎能想到,这面试官就是三年来带我成长的leader呢。

后面就是HR来谈了。

面完很开心,看看邮件还有个面试邀请,算了不去了,就这家吧。对了,这家公司是干啥的来着,百度看看吧。

周末在公司300米内,迅速租了个600块的床位,周一就开始干活啦。

二、实习生涯

实习接的第一个活儿,就是维护一个前辈留下的日志分析系统,看别人的(包括看自己以前的)代码真是一种**(你懂的)的心情。

后面用面向对象的思想重构了下代码,自我感觉清晰了很多,后来再看自己重构的代码又是一种**的心情。

当时大数据已经比较火了,这个日志分析系统大概就是时代更迭的产物。

从日志机下载日志再解析存入mysql,然后运行sql生成统计指标,通过邮件发出来。

三、数据分析

实习了一个月,就回学校做毕设了。

实习过程中,HR问我毕业后愿意留在公司吗?当时情商和智商有些感人,竟然说自己还想去试试别的公司。后来谈三方协议的时候,HR极力反对,实习生留任一般都要实习6个月以上;leader竟然力挺我,想想我实习期内留下的一个个bug,感激之情难以言表。

转正之后,跟着leader做起了数据分析,开始了聊需求、找埋点、写sql、做报表的分析师工作。那时候所说大数据还主要是面向分析,不直接提供业务所用的数据;就算提供给业务使用,更新频率也相当低。

数据分析,是大数据最普遍的一个应用。

  • 1.监控产品发展情况。通过活跃、留存、营收等指标了解产品所处的阶段,监控产品的健康状况,来支撑一些决策。
  • 2.优化产品。要新增一些功能时,可以分析数据评估这个功能是否必要。当功能上线后,可以通过数据衡量这个功能的表现情况。对于一些流程,可以分析用户在流程中的转化情况,针对性地进行优化。
  • 3.优化运营。产品运营人员就关注三件事情:拉新、促活、转化。通过数据可以分析各个拉新渠道roi(投入产出比),以及拉新流程中的转化率。促活和转化,就得建立用户画像,分析用户的喜好习惯。

总之就是增长黑客那一套,指导思想就是让数据指导行动。

过程中还是有很多难点的:

  • 1.寻找埋点、验证埋点就很难了,因为开发很可能漏掉埋点或埋点触发时机不对等。
  • 2.指标做出来后,需求方很可能找其他的数据来源作对比,数据可能对不上;指标波动还要花费很多时间查找原因。
  • 3.报表越做越多,如何将这些报表整理成体系就很重要了。
  • 4.分析所依赖的数据仓库,直接影响着开发报表的效率。

最终在leader的带领下,通过数据分析,了解了公司很多数据,也熟悉了整个大数据平台,学到了如何应用数据指导自己行动。

四、数据开发&数据仓库

数据开发就是生产数据,原料还是数据,不过是比较杂乱的数据,我们就精炼这些数据,产出价值更高的数据。

4.1数据接入

首先数据怎么来到大数据平台呢,就是数据接入的部分。可以直接ftp传过来,可以通过消息队列接过来,如果是数据库可以连接数据库抽取过来,当然还要考虑怎么抽取,抽过来怎么放,万一抽取失败怎么搞……等各种问题。

这里记录几个关于抽取数据库比较典型的问题:

  • 1.数据量少的话,就直接全量抽取;
  • 2.数据量多就得增量抽取,增量如何进行划分;
  • 3.抽过来如何进行合并,如何建立历史快照;
  • 4.删除的数据怎么同步;
  • 5.如果要分布式并行抽取,分区字段用哪个,怎么进行分区。

4.2数据仓库

数据怎么存储加工呢,就需要按照数据加工的过程水平进行分层:原始数据层,明细数据层,聚会数据层,应用数据层。每一层都有不同的作用,越往上数据更能直接产生价值,这样能更清晰统一。当然数据多了水平划分是不够的,还需要按照内容的不同划分不同的领域。数据维度复杂了,还要按照星型模型、雪花模型继续分拆。

4.3数据开发

数据开发就在数据仓库中进行工作,在自己负责的领域生产、精炼数据,结合数据和业务建立合理的数据模型。

4.4数据管理

数据越来越多,又要涉及如何去管理,得给它建立生命周期模型,多久不用的数据该删除还是压缩储存;对于数据表之间的关系,又得建立数据血缘进行管理,以免随便改个数据导致下游的表全部出错;还有数据质量,又该如何去监控管理;数据的权限,又要怎么去保证数据安全。

五、数据平台

接下来就是技术平台了,如何给上面所述提供全面的技术支持呢。

5.1工作流平台

数据的开发程序都是运行时间比较长的任务。如何去管理调度这些任务就是个问题。

  • 1.任务的调度与监控,怎么让它在规定时间运行起来,如何知道它是否运行成功,失败了怎么办。
  • 2.任务之间相互依赖的关系如何去配置,上游任务跑挂了还要继续跑吗。
  • 3.任务一起跑太多又会给机器造成压力,应该如何去控制任务的并行度。

没错,自从负责了工作流平台,常常半夜接到报警电话,睡梦中爬起来修bug。然而还是免不了会出问题,那么第二天其他同事基本就干不了活了。

5.2计算平台

就是用什么工具来进行数据开发呢。什么kafka、spark、hive、flink通通搞起来,要让同事们用得开心、用得爽,基础的代码封装起来,该有的工具加起来,跑得慢的任务优化起来。

5.3服务大众

数据平台的工作就是,公共的东西要负责,没人维护的东西也要负责。包括但不限于代码框架、公用函数库、公用数据……

六、总结

洋洋洒洒写了这么多有的没的,算是对我这工作三年的总结吧。习惯了人生以三年做阶段划分,虽说不同阶段都会去慢慢建立起自己熟悉的环境,但阶段的切换还是会有些怀念与不舍、迷茫与恐惧、兴奋与期待。

说好的,每一步都算数。


分享到:


相關文章: