最性感职业养成记 | 想做数据科学家/工程师?从零开始系统规划大数据学习之路

大数据的领域非常广泛,往往使想要开始学习大数据及相关技术的人望而生畏。大数据技术的种类众多,这同样使得初学者难以选择从何处下手。

这正是我想要撰写本文的原因。本文将为你开始学习大数据的征程以及在大数据产业领域找到工作指明道路,提供帮助。目前我们面临的最大挑战就是根据我们的兴趣和技能选定正确的角色。

 在这里相信有许多想要学习大数据的同学,大家可以+下大数据学习裙:957205962,即可免费领取套系统的大数据学习教程

为了解决这个问题,我在本文详细阐述了每个与大数据有关的角色,同时考量了工程师以及计算机科学毕业生的不同职位角色。

 我尽量详细地回答了每一项人们在学习大数据过程中遇到或可能会遇到的问题。为帮助你根据兴趣选择发展途径,我添加了一组树图,相信会对你找到正确的途径有所帮助。

 

注释:学习之路树状图

在这个树状图的帮助下,你可以根据你的兴趣和目标选择路径。 然后,你可以开始学习大数据的旅程了。 后台回复“职业路径”3个字,下载高清版本。

目录表

1.如何开始?

2.在大数据领域有哪些职位需求?

3.你的领域是什么,适合什么方向?

4.勾勒你在大数据领域的角色

5.如何成为一名大数据工程师?

o什么是大数据行业术语?

o你需要了解的系统和结构

o学习去设计解决方案并且学习相关技术 

6.大数据学习路径

7.资源

1.如何开始?

人们想开始学习大数据的时候,最常问我的问题是,“我应该学Hadoop(hadoop是一款开源软件,主要用于分布式存储和计算,他由HDFS和MapReduce计算框架组成的,他们分别是Google的GFS和MapReduce的开源实现。由于hadoop的易用性和可扩展性,因此成为最近流行的海量数据处理框架。hadoop这个单词来源于其发明者的儿子为一个玩具大象起的名字。), 分布式计算,Kafka(Kafka是由LinkedIn开发的一个分布式基于发布/订阅的消息系统),NoSQL(泛指非关系型的数据库)还是Spark(Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处)?”

而我通常只有一个答案:“这取决于你究竟想做什么。”

 因此,让我们用一种有条理的方式来解决这个问题。我们将一步步地探索这条学习之路。

2. 在大数据行业有哪些职业需求?

在大数据行业中有很多领域。通常来说它们可以被分为两类:

  • 大数据工程

  • 大数据分析

这些领域互相独立又互相关联。

大数据工程涉及大量数据的设计,部署,获取以及维护(保存)。大数据工程师需要去设计和部署这样一个系统,使相关数据能面向不同的消费者及内部应用。

而大数据分析的工作则是利用大数据工程师设计的系统所提供的大量数据。大数据分析包括趋势、图样分析以及开发不同的分类、预测预报系统。

因此,简而言之,大数据分析是对数据的高级计算。而大数据工程则是进行系统设计、部署以及计算运行平台的顶层构建。

3.你的领域是什么,适合什么方向?

现在我们已经了解了行业中可供选择的职业种类,让我们想办法来确定哪个领域适合你。这样,我们才能确定你在这个行业中的位置。

通常来说,基于你的教育背景和行业经验我们可以进行如下分类:

  • 教育背景

(包括兴趣,而不一定与你的大学教育有关)

  1. 计算机科学

  2. 数学 

  • 行业经验

  • 新人

  • 数据学家

  • 计算机工程师(在数据相关领域工作)

因此,通过上面的分类,你可以把自己的领域定位如下:

例1:“我是一名计算机科学毕业生,不过没有坚实的数学技巧。”

你对计算机科学或者数学有兴趣,但是之前没有相关经验,你将被定义为一个新人。

例2:“我是一个计算机科学毕业生,目前正从事数据库开发工作。”

你的兴趣在计算机科学方向,你适合计算机工程师(数据相关工程)的角色。

例3:“我正作为数据科学家从事统计工作。”

你对数学领域有兴趣,适合数据科学家的职业角色。

因此,参照着定位你的领域吧。

(此处定义的领域对你确定在大数据行业的学习路径至关重要。)

 在这里相信有许多想要学习大数据的同学,大家可以+下大数据学习裙:957205962,即可免费领取套系统的大数据学习教程

4.根据领域规划你的角色

现在你已经确定了你的领域,下一步,让我们规划出你要努力的目标职位吧。

如果你有卓越的编程技巧并理解计算机如何在网络(基础)上运作,而你对数学和统计学毫无兴趣,在这种情况下,你应该朝着大数据工程职位努力。

如果你擅长编程同时有数学或者统计学的教育背景或兴趣,你应该朝着大数据分析师职位努力。

5.如何成为一名大数据工程师

让我们先定义一下,一名受到行业承认的大数据工程师都需要学习和了解什么。首先以及最重要的一步是确认你的需求。你不能在不清楚个人需求的情况下直接开始学习大数据。否则,你将一直盲人摸象。

 为了明确你的需求,你必须了解常用的大数据术语。所以让我们来看一下大数据到底意味着什么?

5.1 大数据术语

大数据工程通常包括两个方面 –  数据需求以及处理需求。

5.1.1 数据需求术语

结构:你应该知道数据可以储存在表中或者文件中。储存在一个预定义的数据模型(即拥有架构)中的数据称为结构化数据。如果数据储存在文件中且没有预定义模型,则称为非结构化数据。(种类:结构化/非结构化)。

容量:我们用容量来定义数据的数量。(种类:S/M/L/XL/XXL/流)

Sink吞吐量:用系统所能接受的数据率来定义Sink吞吐量。(种类:H/M/L)

 源吞吐量:定义为数据更新和转化进入系统的速度。(种类:H/M/L)

5.1.2 处理需求术语

查询时间:系统查询所需时间。(种类:长/中/短)

处理时间:处理数据所需时间。(种类:长/中/短)

精度:数据处理的精确度。(种类:准确/大约)

5.2  你需要知道的系统和架构

情景1:

为分析一个公司的销售表现需要设计一个系统,即创建一个数据池,数据池来自于多重数据源,比如客户数据、领导数据、客服中心数据、销售数据、产品数据、博客等。

 

5.3  学习设计解决方案和技术

情节1的解决方案:销售数据池

(这是我的个人解决方案,如果你想到一个更高明的解决方案请在下面分享一下)

那么,一个数据工程师会怎样解决这个问题呢?

需要记住的一点是,大数据系统的目的不仅仅是无缝整合各种来源的数据,而使其可用,同时它必须能使得,用于开发应用系统的数据的分析和利用变得简单迅速和易得(在这个案例中是智能控制面板)。

定义最后的目标:

1. 通过整合各种来源的数据创建一个数据池。

2. 每隔一定时间自动更新数据(在这个案例中可能是一周一次)。

3. 可用于分析的数据(在记录时间内,甚至可能是每天)

4. 易得的架构和无缝部署的分析控制面板。

既然我们知道了我们最后的目标,让我们尽量用正式术语制定我们的要求吧。

5.3.1 数据相关要求

结构:大部分数据是结构化的,并具有一个定义了的数据模型。但数据源如网络日志,客户互动/呼叫中心数据,销售目录中的图像数据,产品广告数据等是非结构化的。 图像和多媒体广告数据的可用性和要求可能取决于各个公司。

结论:结构化和非结构化数据

大小:L或XL(选择Hadoop)

Sink 吞吐量:

质量:中等(Hadoop&Kafka)

完整性:不完整

5.3.2 处理相关要求

查询时间:中至长

处理时间:中至短

精度:准确

随着多个数据源的集成,重要的是要注意不同的数据将以不同的速率进入系统。 例如,网络日志可用高颗粒度连续流进入系统。

基于上述我们对系统要求的分析,我们可以推荐以下大数据体系。

 

6.大数据学习路径

现在,你已经对大数据行业,大数据从业人员的不同角色和要求有所了解。 我们来看看你应该遵循哪条路来成为一名大数据工程师。

我们知道大数据领域充斥着多种技术。 因此,你学习与你的大数据工作角色相关的技术非常重要。这与任何常规领域有点不同,如数据科学和机器学习中,你可以从某些地方开始并努力完成这一领域内的所有工作。

下面你会发现一个你应该通过的树状图,以找到你自己的路。即使树状图中的一些技术被指向是数据科学家的强项,但是如果你走上一条路,知道所有的技术直到“树叶节点”总是很好的。 该树状图源自lambda架构范例。

注释:学习之路树状图

任何想要调配应用程序的工程师必须知道的基本概念之一是Bash 脚本编程。你必须对linux和bash 脚本编程感到舒适。这是处理大数据的基本要求。

核心是,大部分大数据技术都是用Java或Scala编写的。但是别担心,如果你不想用这些语言编写代码,那么你可以选择Python或者R,因为大部分的大数据技术现在都支持Python和R。

因此,你可以从上述任何一种语言开始。 我建议选择Python或Java。

接下来,你需要熟悉云端工作。 这是因为如果你没有在云端处理大数据,没有人会认真对待。 请尝试在AWS,softlayer或任何其他云端供应商上练习小型数据集。 他们大多数都有一个免费的层次,让学生练习。如果你想的话,你可以暂时跳过此步骤,但请务必在进行任何面试之前在云端工作。

接下来,你需要了解一个分布式文件系统。最流行的分布式文件系统就是Hadoop分布式文件系统。在这个阶段你还可以学习一些你发现与你所在领域相关的NoSQL数据库。下图可以帮助你选择一个NoSQL数据库,以便根据你感兴趣的领域进行学习。

到目前为止的路径是每个大数据工程师必须知道的硬性基础知识。

现在,你决定是否要处理数据流或静止的大量数据。 这是用于定义大数据(Volume,Velocity,Variety和Veracity)的四个V中的两个之间的选择。

那么让我们假设你已经决定使用数据流来开发实时或近实时分析系统。 之后你应该采取卡夫卡(kafka)之路,或者还可以采取Mapreduce的路径。然后你按照你自己创建的路径。 请注意,在Mapreduce路径中,你不需要同时学习pig和hive。 只学习其中之一就足够了。

总结:通过树状图的方式。

  1. 从根节点开始,并执行深度优先的通过方式。

  2. 在每个节点停止查验链接中给出的资源。

  3. 如果你有充足的知识,并且在使用该技术方面有相当的信心,那么请转到下一个节点。

  4. 在每个节点尝试完成至少3个编程问题。

  5. 移动到下一个节点。

  6. 到达树叶节点。

  7. 从替代路径开始。

最后一步(#7)阻碍你! 说实话,没有应用程序只有流处理或慢速延迟数据处理。 因此,你在技术上需要成为执行完整的lambda架构的高手。

另外,请注意,这不是学习大数据技术的唯一方法。 你可以随时创建自己的路径。 但这是一个可以被任何人使用的路径。

如果你想进入大数据分析世界,你可以遵循相同的路径,但不要尝试让所有东西都变得完美。

对于能够处理大数据的数据科学家,你需要在下面的树状图中添加一些机器学习渠道,并将重点放在机器学习渠道上,而不是下面提供的树状图。 但我们可以稍后讨论机器学习渠道。

根据你在上述树状图中使用的数据类型,添加选择的NoSQL数据库。 

该表格表示数据存储类型要求及相应的软件选择

如你所见,有大量的NoSQL数据库可供选择。 所以它常常取决于你将要使用的数据类型。

而且为了给采用什么类型的NoSQL数据库提供一个明确的答案,你需要考虑到你的系统需求,如延迟,可用性,弹性,准确性当然还有你当前处理的数据类型。

7.资源

初学者的Bash指南,来自Machtelt Garrels

1.Python

  • 让每个人变成python专家,来自Coursera(https://www.coursera.org/specializations/python)

  • 用Python学数据科学之路,来自Coursera(https://www.analyticsvidhya.com/learning-paths-data-science-business-analytics-business-intelligence-big-data/)

2. Java

  • Java编程简介1:开始使用Java编码,来自 Udemy(https://www.edx.org/course/introduction-programming-java-1-starting-uc3mx-it-1-1x)

  • 中级和高级Java编程,来自Udemy(https://www.udemy.com/intermediate-advanced-java-programming/)

  • Java 编程介绍2,来自 Udemy(https://www.edx.org/course/introduction-programming-java-2-writing-uc3mx-it-1-2x)

  • 面向对象Java编程:数据结构和超越专业化,来自Coursera(https://www.coursera.org/specializations/java-object-oriented)

3. 云

  • 大数据技术基础,来自亚马逊网络服务(https://www.edx.org/course/introduction-programming-java-starting-uc3mx-it-1-1x)

  • AWS上的大数据,来自亚马逊网络服务(https://aws.amazon.com/training/course-descriptions/bigdata/)

4. HDFS

  • 大数据和Hadoop 要点,来自 Udemy(https://www.udemy.com/big-data-and-hadoop-essentials-free-tutorial/)

  • 大数据基础,来自大数据大学(https://bigdatauniversity.com/learn/big-data/)

  • Hadoop入门工具包(https://www.udemy.com/hadoopstarterkit/)

  • Apache Hadoop文档(https://hadoop.apache.org/docs/r2.7.2/)

  • 书--Hadoop集群部署(http://shop.oreilly.com/product/0636920033448.do)

5. Apache Zookeeper

  • Apache Zookeeper文档(http://shop.oreilly.com/product/0636920028901.do)

  • 书 - Zookeeper(https://zookeeper.apache.org/doc/r3.4.6/)

  • 6. Apache Kafka

  • 完整初学者Apache Kafka课程(http://shop.oreilly.com/product/0636920028901.do)

  • 学习Apache Kafka基础和高级主题(https://www.udemy.com/learn-apache-kafka-basics-and-advanced-topics/)

  • Apache Kafka文档(https://kafka.apache.org/documentation/)

  • 书 - 学习Apache Kafka(https://www.amazon.in/Learning-Apache-Kafka-Nishant-Garg-ebook/dp/B00U2MI8MI/256-7260357-1334049?_encoding=UTF8&tag=googinhydr18418-21)

7. SQL

  • 用MySQL管理大数据(https://www.udemy.com/beginners-guide-to-postgresql/)

  • SQL课程(http://www.sqlcourse.com)

  • PostgreSQL初学者指南(https://www.udemy.com/beginners-guide-to-postgresql/)

  • 高性能MySQL(http://shop.oreilly.com/product/0636920022343.do)

8. Hive

  • 使用Hive访问Hadoop数据(https://cognitiveclass.ai/learn/big-data/0

  • 学习Apache Hadoop生态系统 Hive(https://cognitiveclass.ai/learn/big-data/)

  • Apache Hive文档(https://hive.apache.org)

  • Hive编程(https://hive.apache.org)

9. Pig

  • Apache Pig 101,来自大数据大学(https://cognitiveclass.ai/courses/introduction-to-pig/)

  • 用Hadoop与Apache Pig编程(https://bigdatauniversity.com/courses/introduction-to-pig/)

  • Apache Pig文档(http://shop.oreilly.com/product/0636920044383.do)

  • 书 - Pig编程(https://pig.apache.org/docs/r0.12.0/)

10. Apache Storm

  • 使用Apache Storm实时分析(https://www.udacity.com/course/real-time-analytics-with-apache-storm--ud381)

  • Apache Storm文档(https://www.udacity.com/course/real-time-analytics-with-apache-storm--ud381)

  • 11. Apache Kinesis

  • Apache Kinesis文档(https://aws.amazon.com/cn/documentation/kinesis/)

  • Amazon Kinesis通过Amazon Web Services流式浏览开发人员资源(https://aws.amazon.com/cn/documentation/kinesis/)

  • 亚马逊Kinesis Streams开发人员资源,来自亚马逊网络服务(https://aws.amazon.com/documentation/kinesis/)

12. Apache Spark

  • 数据科学、工程与Apache(https://www.edx.org/xseries/data-science-engineering-apache-spark)

  • Apache Spark文档(https://www.edx.org/xseries/data-science-engineering-apache-spark)

  • 书 - 学习Spark(https://www.edx.org/xseries/data-science-engineering-apacher-sparktm)

13. Apache Spark Streaming

  • Apache Spark Streaming文档(http://spark.apache.org/streaming/)

尾注

我希望你们喜欢阅读这篇文章。 借助这种学习途径,你将能够踏上你在大数据行业的旅程。 我已经叙述了大部分你找工作会要求的主要概念。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要成为优秀的前端工程师,有以下几点建议: 1. 学习 HTML、CSS 和 JavaScript 这三门基础技术,掌握常用的语法和 API。 2. 熟悉常见的前端框架,如 React、Vue、Angular 等,并学会如何使用这些框架来构建 Web 应用。 3. 关注前端领域的最新发展,不断提升自己的技术水平。 4. 注重用户体验,学会使用工具来分析和优化网站的性能。 5. 注重代码质量,学会使用版本控制工具,并养成良好的编码习惯。 6. 善于沟通和协作,能够与后端工程师和产品经理等团队成员配合,共同完成项目。 ### 回答2: 要成为优秀的前端工程师,首先需要全面掌握前端技术。 首先,对HTML、CSS和JavaScript的基础语法要熟悉。掌握HTML的结构和标签,了解CSS的样式属性和选择器,学习JavaScript的基本语法和常用方法。此外,要了解Web标准和浏览器兼容性,以便编写优雅且兼容不同浏览器的代码。 其次,要学习掌握各种流行的前端框架和库,如React、Vue和Angular。这些框架能够提供更高效、可维护和具有良好用户体验的前端应用程序。 另外,要深入了解前端性能优化和调试技术。通过减少HTTP请求、压缩代码、使用合适的缓存策略等手段来提高网页加载速度和性能。同时,要熟悉主流浏览器的开发者工具,并能够利用这些工具进行代码调试和性能分析。 而且,要有良好的代码管理和团队合作能力。了解版本控制系统如Git,并掌握常用的代码管理工作流程,例如分支管理、合并和冲突解决。此外,学会与团队成员协作,合理分工、高效沟通,共同完成项目。 最后,要不断学习与研究前端技术的最新动态。前端技术发展迅速,时刻关注最新的前沿技术和趋势,参加行业研讨会和培训课程,积极参与开源社区,不断提升自己的技术能力。 总的来说,成为优秀的前端工程师需要不断学习和实践,掌握基础技术、深入了解前端框架、掌握性能优化和调试技术、具备良好的代码管理和团队合作能力,并保持对前端技术的持续学习和追求。 ### 回答3: 要成为优秀的前端工程师,需要具备以下几个方面的能力和品质。 首先,需要扎实的技术基础。前端工程师需要熟悉HTML、CSS和JavaScript等技术,并掌握各种前端框架和工具。通过学习相关教程和参与项目实践,不断提升自己的技术水平。 其次,要有优秀的问题解决能力。前端工程师常常面临各种问题和挑战,需要有快速分析和解决问题的能力。学会利用互联网资源,查询和学习相关知识,通过不断实践和调试,找出最佳解决方案。 第三,要有良好的团队合作意识。作为前端工程师,往往需要和UI设计师、后端工程师以及产品经理等其他团队成员紧密合作。要学会倾听他人的意见和建议,善于沟通和协作,共同完成项目任务。 此外,持续学习也是成为优秀前端工程师的必备品质。由于前端技术更新迅速,需要不断学习新的技术和工具,跟随行业的发展趋势。参加相关的培训课程、技术讲座和行业活动,加强自身的专业素养。 最后,为自己设定目标和规划发展路线。前端工程师职业发展广阔,可以从事移动端开发、前端架构设计、性能优化等不同领域。制定明确的职业规划,有针对性地学习和发展,提升自身的竞争力和专业能力。 总之,成为优秀的前端工程师需要不断学习和实践,具备扎实的技术基础、出色的问题解决能力和团队协作能力,同时保持持续学习规划自我发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值