|
|
|
|
移动端
创建专栏

一份靠谱的数据开发从业指南

有小伙伴让我聊聊数据开发的职业规划和从业指南,因为数据开发从业人员的知识量实在是太太太大了,今天恰好这个机会好好聊聊。

作者:大蕉|2018-01-29 16:29

人工智能+区块链的发展趋势及应用调研报告


数据开发太庞大了

有小伙伴让我聊聊数据开发的职业规划和从业指南,因为数据开发从业人员的知识量实在是太太太大了,今天恰好这个机会好好聊聊。

我们先来看看 InfoQ 整理的这个图,技能树不是一般的庞大,如果你是大牛那忽略我上面说的一切,你能 handle 的。但是作为一个初级人员,那具体应该从哪里去切入呢?

原下载地址。https://raw.githubusercontent.com/TeamStuQ/skill-map/master/data/designbyStuQ/png-BigData-by-StuQ.png

数据开发是有很多种的

很多小伙伴一聊到数据挖掘呢,都会无法自拔地想到机器学习算法,其实嘛,绝大多数的数据岗位并不需要这么高深的知识。但是如果你掌握了技能书的更多内容呢,你可能可以对你数据的上下游有更加强的把控力度,你可能可以进阶到下一个阶段。

数据挖掘的技能树横向和纵向都是很深的,并不适合所有的门外汉,因为往深了学确实很难,需要机器学习、深度学习、概率论、线性代数、智能优化方法等很深层次的数学知识,需要分布式一致性的各种算法,需要资源调度的各种理论。

很多人都觉得要掌握所有的技能才能开始这项工作。两个字概括今天这篇文章,未必。一句话,每个岗位都有自己的侧重点,各项技能在每个岗位的权重都不一样。

数据从产生到被使用,最基础的链路就是。采集 -> 清洗 -> 处理 -> 分析 -> 决策。而在这个链路上,从前到后,所需要的技能是不一样的。一般来说,越处于后端门槛越高,复杂程度也越高。当然我不是说前面就不重要了,每一个环节都很重要,只是门槛高低而已。每个阶段做到牛逼你都可以很牛逼。

所以数据开发的职位从纵向来说,可以分为 数据采集工程师->ETL工程师->数据开发工程师->数据算法工程师->数据分析师。从横向来说,还可以有数据集群运维工程师、大数据平台开发工程师、数据治理架构师、数据服务架构师、大数据系统架构师、大数据框架开发工程师 这些职位来支持前面的这些流程更加方便快捷地开发和落地,以及更好地维护。

数据开发每一种需要什么技能呢?

从职业发展来说,一般来说有这么三条线,只是个人见解,大家看着食用。

主线1:给数据开发人员提供支持的线,就叫他服务支持线吧。

数据集群运维工程师->大数据平台开发工程师->大数据系统架构师->大数据框架开发工程师

主线2:为数据开发人员提供弹药,就叫他数据仓库线。

数据采集工程师->ETL工程师->数据治理架构师->数据服务架构师

主线3:为数据分析人员提供弹药,就叫他数据挖掘线。

数据开发工程师->数据算法工程师->数据分析师

而且会经常的,从主线1到主线3的过程中,越靠后的会越发现,前面的人做的什么玩意,数据太乱了,工具太特么难用了。这个时候可能会产生跳跃,去帮助前面的人完善一些东西。所以主线3的数据开发和数据算法人员经常会跳到主线2帮助数据仓库人员梳理数据层次,梳理数据服务的提供方式。主线3和主线2的人发现工具平台太难用或者集群不稳定,甚至可能开发框架有点难受,都会跳到主线1协助平台和框架的优化。

下面稍微说说三条主线,各自的技能点差异。

主线1:服务支持线

必选:Linux、Hadoop集群,Hive、Zookeeper、HBase、Ozzie、Flume

可选:Impala、各种框架源码

语言:shell、Python

建议路线:1、先学习基础的 Hadoop 集群维护技能,写一些 shell 脚本,使用定时调度功能。2、学会使用平台工具进行监控和维护,并参与到平台开发和工具开发中。3、对现有系统架构和框架进行重新架构或改良。

主线2:数据仓库线

必选:HiveQL、Spark、Hive、Flink、Kafka

可选:Storm、分布式一致性算法、JVM调优、MapReduce、BitTable

语言:Scala,SQL,Java

建议路线:1、学会从业务系统的关系型数据库中抽取数据。2、学会使用Hive SQL 对数据进行清洗。3、学会用 Spark、Flink 对数据进行各种处理和输出,若数据量太大则应该进行调优。4、学会对数据进行治理,对数据进行分层设计,对数据分布心理有数,对数据质量进行全方位监控。

主线3:数据挖掘线

必选:可视化技术、SQL、统计学、概率论、智能优化、机器学习工具(Tensorflow、scikit-learn)

可选:caffee,torch,OpenCV

语言:Python,R

建议路线:1、学会使用 SQL 拿到所需的数据以及预处理出特征。2、使用 R 或者 Scikit-learn 进行数据探索和挖掘。3、对数据进行业务层面的分析,以提取出更有用的东西。4、自己实现一些数据分析的算法。

聊聊数据开发的语言问题

最后聊聊数据从业人员的语言问题。总是有小伙伴问我,该不该学 R,该不该学 Scala ,该不该学 Python,该不该用 Java。我的观点就是,每个语言都只是自己的工具,不要守着一本语言到死,每个语言都有它自己擅长的领域,在每个领域你尽量用它擅长的语言去处理,就好了。(并不是说当然其他语言也会有一些旁支可以处理一些)。

Scala:Spark的实现语言是 Scala,现在也有大神用 PySpark 来实现一些数据处理的东西,为了兼容机器学习框架。

Python:数据爬取和机器学习从业必备,其他语言基本都是旁支。不要以为Python跑得很慢,其实那些框架都是 C++ 和 C 实现的,只是套了一个 Python 的壳,还做了很多优化,比你自己写的 C++ 还快。

R:数据探索和数据可视化有非常多场景是用 R 语言来进行做的。

Java:Hadoop 套件基本都是用 Java 实现的,熟悉 Java 可以让你更加清晰你所占用的资源分布,瓶颈是在 cpu 还是 内存,是磁盘 IO 还是 网络 IO。

建议的切入角度

从 Sqoop、Hive、Spark、Hadoop 、Python入手,了解最基础的数据处理流程,在这下面几个流程中有针对性地进行学习。

1、从关系型数据库用 Sqoop 导入到 Hive 中,这个过程可以用 Ozzie 定时调度。

2、使用 HiveSQL 进行数据清洗

3、使用 Spark 和 SparkStreaming 进行数据离线和在线处理。

4、使用 SparkMLLib 或者 scikit-learn 进行数据初探。

【本文为51CTO专栏作者“大蕉”的原创稿件,转载请通过作者微信公众号“一名叫大蕉的程序员”获取授权】

戳这里,看该作者更多好文

【编辑推荐】

  1. 数据库读写分离架构,为什么我不喜欢
  2. 外媒速递:Web开发者与用户界面开发者之间究竟有何不同?
  3. 开发过 Android TV App 吗?推荐个好用的工具给你!
  4. 第39期:数据分段讨论
  5. 数据备份,想说爱你不容易
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多