根据数据应用的不同阶段,我将从数据底层到最后应用,来谈谈那些数据人的必备技能。
1、大数据平台
目前很火,数据源头,各种炫酷新技术,搭建Hadoop、Hive、Spark、Kylin、Druid、Beam~,前提是你要懂Java,很多平台都是用Java开发的。
目前很多企业都把数据采集下来了,对于传统的业务数据,用传统的数据是完全够用的,可是对于用户行为和点击行为这些数据或者很多非结构化的数据,文本、图像和文本类的,由于数据量太大,很多公司都不知道怎么进行存储。
这里面要解决的是实时、近实时和离线的大数据框架如何搭建,各数据流之间如何耦合和解耦,如何进行容灾、平台稳定、可用是需要重点考虑的。
我的感觉是:最近两三年中,这块人才还是很稀缺的,因为大数据概念炒作的这么厉害,很多企业都被忽悠说,我们也来开始进入大数据行业吧。进入的前提之一就是需要把数据存储下来,特别是很多用户行为方面的数据,对于业务的提升比较明显的,如果你能很好的刻画用户,那么对你的产品设计、市场营销、开发市场都是有帮助的。现阶段,很多公司都要做第一步:存储更多的数据。这也是这块人员流动性比较高的原因,都被高薪挖走了。
和传统的SQL不同的是,针对大数据量的非结构式数据,我们所想的就是:用最廉价的成本存储数据同时能够达到容灾、扩展性高、高性能、跨域,从目前来看,分布式已经被证明是个很好的一个方式。
另外,云端会是个很好的方向,不是每个公司都养得起这么多这么贵的大数据平台开发人员和运维人员OPS,从事这个行业的我们要有很好的危机意识,及时贡献出自己的价值,积极主动的学习新技术、否则就可能被淘汰了。
此外,花点钱把数据托管给云服务提供商是对于创业公司或者一些传统的企业来说是个很好的思路,这样能够最快速的确定数据对你的价值是什么,而不用采购这么多的服务器、雇佣这么多的运维人员和网站开发人员。
说了以上这些,主要是想给未来会从事这块的人或者想存储数据的公司一点方向。我自己不做这块,体会不深,大家看看就行。
这块工作最被吐槽的一点就是:Hive速度好慢,SQL查询好慢,集群怎么又挂掉了,hadoop版本升级后,怎么数据跑出来不对了等等。
因此,在这个领域内工作,需要有强大的攻坚能力,并且还需要有快速定位和解决bug的能力,因为有很多工具都是开源的。因为是开源的,所以你们懂得,各种坑爹,甚至出现无法向下兼容的情况,所以需要强大的Java开发能力。
如果想在这块做的很好,还需要有整个系统架构的设计能力、比较的强的抗压能力和解决问题的能力、资源收集的能力,可以打入开源社区,这样就可以随时follow最新的潮流和技术。
2、数据仓库-ETL
确实做仓库的人很辛苦,单单Oncall就会让人望而却步。有很多数据库工程师,晚上睡觉的时候经常被Oncall电话吵醒,因为数据流程出问题,需要第一时间去排查,是哪个数据源出问题,并且要立即解决,否则整个数据流程都会受到影响。
如果数据流程受到了影响,你就可能会被大领导一言不合叫到办公室说:我要的数据怎么还没有准备好,我的业务报表今天怎么没有发出来。
通过上面这个情景,我们可以知道:这是个很重要的岗位,因为数据流程很重要,决定了数据从源头杂乱无章的状况,通过ETL之后变成了整齐的数据,这些整齐一致性的数据可以让你很方便地把各业务的统计结果计算出来,并且能够统一口径。要不然就会变成有几个部门,就有几种统计结果,到时候A部门说业务增长了5%,B部门说业务涨了10%,OMG,到底信谁。
至少在以下几点上,我觉得数据仓库人员应该要做好:
a、数据字典的完整性,用的人都希望能够清晰的知道这个字段的逻辑是什么。字段要保持很好的一致性,不要同样一个字段在不同表里有不同的定义。
b、核心流程的稳定性,不要让每天订单主表能够使用的时间很不稳定,有的时候很早,有的时候要中午才出来,如果不稳定就会导致使用数据的人对你很没有信心。
c、仓库版本迭代不要过于频繁,要保持不同版本之间的兼容性。不要做好了仓库1.0,很快就把原来的推倒重来,变成了2.0。在数据仓库中需要考虑到延续性,主表的变动不要太频繁,否则使用的人会非常痛苦,好不容易才用习惯了1.0的表结构,没办法这么快进行切换。简单地说,要能向下兼容。