大数据的岗位可以分为三大类:大数据系统研发人员、大数据应用开发人才和大数据分析人才。英国领先的报告显示,数据分析师的供应指数低至0.05,这是非常稀缺的,而分析数据是跳槽速度同比其他最快,大数据分析师平均跳槽速度为19.8月。在中国,随着大数据应用于各个行业,对于大数据相关岗位的需求也更大,据统计,中国未来的基础数据分析差距将达到1400万,在BAT企业招聘岗位中,有60%以上正在招聘大数据相关人才。
想成为一个出色的分析师需要N多技能,那些技能能让你快速实现自己的目标,这才是我们学习数据分析应该定位的,都要学习吗?
有了场景,有了明确的目的,接下来才是分析师们常用的三大利器:
1、对比,任何分析都是对比,对比就要讲究设计、平等、体系,才可比,换句话就是找“双胞胎”,才值得比,并列关系;
2、拆解,业务其实和数据分析一样,都是不断的拆分,拆的程度就是回答你的假设,许多指标都是分渠道、区域、用户类型、品类特征去拆,但拆要分主次,你拆和不拆对结果有什么影响要好好假设考虑,并列和主次;
3、构成,许多事情你明白他的构成你就更加清晰,好比你去饭店吃饭,有一盘菜,LP说真好吃,那你就会去研究这菜有什么成分,什么菜品组成,加工顺序如何,这就叫抛,彼此都是并列和流程关系。
即使大数据这名词稍微退烧(或许是太多招摇撞骗的人吧), 但随著软体业近年来负载量愈来愈大,对后端处理资料的需求其实也是变得愈来愈高。 无奈资料工程这技能学校不会教,因为没有学术价值。 在业界内除非进入资料团队,不然也不会接触到。 最糟的是,各家公司内部的资料团队素质也良莠不齐,要学到好的资料工程技术真的只能靠运气。 笔者的公司算得上是资料工程做得还不错的,以下为笔者认定的大数据核心技能分析及设计高延展性 (highly scalable) 程式能写出常见的 data operation 如 join, de-duplicate, group-by能处理 data skew (资料过度集中在少数的 key)的问题;知道如何选择 map output key, 以及 secondary key sort 的排序设计能验证资料正确性设计 regression test system. 每次资料系统更新都能检验前后处理的差别可以撰写工具检验大量的数据正确性。
从一开始规划系统就让它具有高度的可验证性,以及严格的验证它将资料工程自动化的能力,可以处理资料相依性问题
自动处理错误的策略要能 revert & reprocess使用 control table 去控制及追踪不同工做的 state系统维护透过 log & stacktrace 来 debug知道基本的系统平台管理。JobTracker, HDFS 等指令要熟悉了解各种 Map Reduce 参数,可以调校效能参数。
实事求是的精神
做资料工程或分析,最忌讳的就是骗自己。永远不要用猜的,要用资料来验证自己的想法是否正确。
各种资料系统设计都有隐藏的代价,不要对这些代价视而不见。
挖掘问题先于寻找解决方案。只有完全了解自己的需求后,才能在多种方案中选择最适合自己的一个。
以上的技能集中在如何成为大数据工程师。资料科学的训练不记入其中,因为光是达到以上的技能就已经很花时间啦。 当这些技能都练得相当不错时,再跨足资料科学,其实也不太难。 不过通常是分工合作更简单一些,因为学资料科学的人远比资料工程多很多。
大数据工程技能树该如何点?
初级
学习目标:能独立开发 highly scalable 的程式及演算法。更高阶的资料系统设计不包含在内。
学习架构
建立开发环境
写最简易的 SQL operation
写中阶的 SQL operation
写 SQL 难以办到的功能
浅论资料工程架构 (dedup, join, aggregation)
开始有能力分析资料演算法的复杂度,以及了解 data skew 的处理策略
能透过 log & stack trace 找出自己程式哪里写错
高级
学习目标:学会许多更深入的技能,并且能规划高阶的资料系统设计。
serialization & data collection strategy
End to end trace data design
control table & automation design
lower level API (inputformat, outputformat, etc.)
advanced java tricks
analyze performance factor
MR network cost calculation, advanced MapReduce
初级的学习大概一两个月内可以精通。笔者当年就是花差不多的时间无师自通的。高级目标笔者则是经由跟比较年长的工程师学习而来,比较难评估学习时间。