靠谱的数据开发从业指南

标签: dev | 发表时间:2018-01-29 00:00 | 作者:
出处:http://itindex.net/relian

数据开发太庞大了


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


我们先来看看 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 进行数据初探。


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

提高Spark姿势水平 No.73






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



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




Just need a coffee



相关 [数据 开发] 推荐:

数据仓库的设计与开发

- - 数据库 - ITeye博客
     数据仓库系统的设计与开发. 1)       收集和分析业务需求.   用户需求,管理人员需求. 2)       建立数据模型和数据仓库的物理设计.   概念模型,逻辑模型,物理模型. 3)       定义数据源. 数据源面向应用,不是面向主题,而且数据源之间存在多个不一致的情况,所以必须在已有的系统中定义记录系统(内容正确,在多个数据源间起决定作用的操作型数据源).

写给大数据开发初学者的话 | 附教程 | 大数据

- -
第二章:更高效的WordCount. 第三章:把别处的数据搞到Hadoop上. 第四章:把Hadoop上的数据搞到别处去. 经常有初学者在博客和QQ问我,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高. 如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么我就想问一下,你的专业是什么,对于计算机/软件,你的兴趣是什么.

数据库开发工具 DreamCoder 宣布全面免费

- xxg - 博客园新闻频道
  DreamCoder 同时为MySQL、PostgreSQL 和 Oracle 开发提供一个功能强大的软件解决方案. 拥有非常直观的用户界面,支持所有的功能,包括表、视图、存储过程、作业、触发器、事件、InnoDB、外键、用户自定义字段类型、BLOB类型,等等.   日前,DreamCoder 宣布全面 100%免费,包括 MySQL、PostgreSQL 和 Oracle 三个版本.

MySQL数据库开发的赶集网三十六条军规

- sunseesiu - MySQLOPS 数据库与运维自动化技术分享
MySQL数据库开发的三十六条军规 View more presentations from mysqlops 原创文章,转载请注明: 转载自MySQLOPS 数据库与运维自动化技术分享 本文链接地址: MySQL数据库开发的赶集网三十六条军规.

将安全开发流程扩展到云和大数据

- - 博客园_知识库
  英文原文: Extend your secure development process to the cloud and big data.   简介: 云计算和大数据正在改变着企业. 了解必须将这些新技术融入您的安全开发流程的原因,并了解什么是安全开发流程、云计算和大数据技术的组成部分,以及它们存在哪些应用程序安全风险和如何减轻这些风险.

写给开发者看的关系型数据库设计

- - 博客 - 伯乐在线
数据库设计,一个软件项目成功的基石. 很多从业人员都认为,数据库设计其实不那么重要. 现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍. 多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单. 其实不然,数据库设计也是门学问. 从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA).

开发人员如何有效地进行数据库设计

- - InfoQ cn
数据库设计在软件开发过程中占有重要的地位,国内开发者MeteorSeed在 博客中结合自己的实际经历全面总结了关系型数据库设计需要注意的各个方面,包括Codd的基本法则、设计阶段、设计原则和命名规则. MeteorSeed认为在项目早期应该由开发者进行数据库设计,后期调优则需要DBA:“一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化”.

使用Hibernate + MYSQL数据库开发,链接超时问题:

- - CSDN博客Web前端推荐文章
使用Hibernate + MYSQL数据库开发,链接超时问题:. 查了一下,原来是mysql超时设置的问题. 如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat. . 如果不用hibernate的话, 则在 connection url中加参数: autoReconnect=true.

产品开发中,设计与数据孰轻孰重?

- - 雷锋网
通常,数据热衷者和设计狂人之间会有一些冲突,也许最著名的例子就是2009年的Google离职事件:彼时,在Google这个数据大过天的环境中,设计师Douglas Bowman毅然选择辞职. 是的,Google团队在犹豫选择哪种蓝色的时候,他们会分别测试两种蓝色的41种明暗度,以此来决定选择哪一个.

靠谱的数据开发从业指南

- - IT瘾-dev
有小伙伴让我聊聊数据开发的职业规划和从业指南,因为数据开发从业人员的知识量实在是太太太大了,今天恰好这个机会好好聊聊. 我们先来看看 InfoQ 整理的这个图,技能树不是一般的庞大,如果你是大牛那忽略我上面说的一切,你能 handle 的. 但是作为一个初级人员,那具体应该从哪里去切入呢. 很多小伙伴一聊到数据挖掘呢,都会无法自拔地想到机器学习算法,其实嘛,绝大多数的数据岗位并不需要这么高深的知识.