97

靠谱的数据开发从业指南No.82

 6 years ago
source link: http://mp.weixin.qq.com/s/K-u_L8YwLW0o-r9kLrvLcQ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

靠谱的数据开发从业指南No.82

Original 大蕉 一名叫大蕉的程序员 2018-01-28

数据开发太庞大了

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

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

640?wx_fmt=jpeg

原下载地址。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 进行数据初探。

给大数据入门小伙伴的几个小挑战No.28

提高Spark姿势水平 No.73

完。希望能对你们会有点启发,对于数据挖掘不会觉得很深奥,觉得有用的话分享给你的朋友吧。你不转发赞赏评论丢硬币丢香蕉🍌一下吗?

PS:微信群满100人了二维码扫不了了,可以作为一个吹逼聊天的地方,万一思想碰撞出什么呢?有兴趣的直接加我微信 DAAA-Banana ,我拉你进去。弱弱地问一句,要是开小蜜圈有人想进吗?因为微信实在刷得太快,公众号频率又太低,小蜜圈可以分享一些很小的不足以成文但个人认为又有价值的点。留言告诉我吧~

Just need a coffee

640?wx_fmt=jpeg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK