Skip to content

Latest commit

 

History

History
161 lines (81 loc) · 14.3 KB

get-job-as-data-engineer.md

File metadata and controls

161 lines (81 loc) · 14.3 KB

如何成为数据工程师

原文:www.kdnuggets.com/2021/01/get-job-as-data-engineer.html

评论

Anna Anisienia 提供,TrailStone Renewables 的 Python 工程师


我们的前三名课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业道路。

2. Google 数据分析专业证书 - 提升你的数据分析技能

3. Google IT 支持专业证书 - 支持你的组织 IT


照片由 Nathan Riley 提供,发布于 Unsplash

数据工程是一个迷人的领域。你可以处理各种有趣的数据、前沿技术,以及与不同的数据专业人员和领域专家合作。整个数据工程领域相对较新。作为数据工程师,你的角色对公司的成功至关重要——许多数据专业人士,包括数据分析师和数据科学家,都依赖你来完成他们的工作。你负责提供始终可用、可靠且结构合理的数据。

公司需要你根据真实数据和从中生成的 KPI 做出明智的决策。如果你做得好,他们愿意为此付出丰厚的薪资!让我们探讨一下哪些技能需求量大,哪些因素对未来职业前景影响较大,以及如何应对技术面试。

总体而言,通常很难给出任何真正的通用建议,但我总结了似乎最相关的技能,这些技能在招聘广告中被提及多次,并结合了我在这一领域的经验。

1. 成为 T 型专业人士

最好是成为全才T 型横杆),即理解数据库、云计算、数据仓库、大数据的一般概念,并且至少了解一些 SQL、Python、Docker 和创建 ETL 的基础知识。

同时,你应该在至少一个特定领域具备更强的技能T 型竖杆)。例如,你可能在编写SparkDask 数据操作方面非常出色,或者你可能拥有某些公司所需的领域知识,这使你在其他申请者中脱颖而出。

在许多情况下,精通 SQL + Python、Linux 和 AWS 的基础知识已足以让你获得一个薪酬不错的初级职位。

2. 处理数据的云服务

云计算革新并改变了许多行业。作为数据工程师,你需要了解存储、计算、网络和数据库的最重要服务。如果你对这些不太了解,我强烈推荐学习亚马逊网络服务——即使你最终使用的是谷歌云平台或微软 Azure,从 AWS 学到的概念也可以很容易地应用于不同的云服务商,因为许多云服务商的服务是类似的,其概念实际上是相同的(例如,块存储与对象存储与 NFS)。

如果你对 AWS 不太熟悉,可以参考这个链接,你会找到优秀的 AWS 免费课程——它们都是由 AWS 直接提供的。你不需要为额外的证书付费——根据我的经验,招聘人员和工程经理并不特别看重证书。他们希望招聘到有实际经验、知识丰富并能将其应用于业务问题的人。

数据工程职位最重要的 AWS 服务包括:

  • 能够以编程方式与S3上的文件进行交互(下载和上传 CSV 或 parquet 文件

  • 能够启动并 SSH 到EC2实例 + 了解一些 Linux 基础,以便通过 CLI 与之交互

  • IAM:了解如何创建 IAM 用户、为相关服务附加策略、使用它来配置AWS CLI的编程访问 + IAM 角色的基本工作原理

  • VPC:你应该知道什么是 VPC、子网,并了解它们的基本工作原理(你的 VPC 存在于特定的 AWS 区域,子网存在于该区域内的特定可用区

  • **RDS:**了解如何启动或至少与关系数据库如 Postgres 进行交互。

此外,了解 AWS Lambda(无服务器功能即服务)、ECS 和 EKS(大规模运行容器)、亚马逊 Redshift(云数据仓库)、Athena(无服务器查询引擎,用于查询 S3 数据湖)以及 AWS Kinesis 或亚马逊 MSK(两者都用于实时流数据)也是有益的。但你可以首先关注列表中的服务。Edx 的课程解释了其中大多数。并且,记住要实践:使用 AWS 免费层,你可以(有限)访问这些基础服务,从而通过动手操作进行学习。

3. 构建 ETL 管道

成为数据工程师很大一部分是将来自各种来源的数据集成,转化为适合分析的形式,然后加载到某个数据湖或数据仓库。你应该有创建 ETL 的一些经验。这并不意味着你必须在大型公司的大数据项目中工作——即使是你在 Github 或博客中分享的自驱动项目也能在申请过程中大有裨益,并让你从人群中脱颖而出。

4. 管理、监控和调度 ETL 管道

数据工程师的主要职责之一是确保数据始终可用、可靠且结构合理。为了实现这一点,你需要调度和监控你的数据管道。许多公司使用如 Apache AirflowPrefect 的工作流管理系统,所以了解其中之一可能会显著提高你获得优秀数据工程职位的机会。如果你想 了解更多相关内容,请阅读我之前的故事,例如 这篇文章 —— 在那篇文章中,我展示了如何在 AWS 上轻松设置一个 无服务器 Kubernetes 集群 的工作流管理系统。

5. 能够使用容器:Docker 和 Kubernetes

如果你使用 Python,你会知道你的代码可能会因为升级到新的 pandas 版本而突然失效。容器化是关键,因此 能够处理容器化工作负载 是(任何)工程职位中最关键且需求量最大的技能之一,因为它使你的代码自包含、无依赖,并且让你能够将代码部署到 几乎 任何环境。

6. 了解基本概念

这与成为 T 型专业人士相辅相成:你应该了解数据仓库、数据湖、大数据、REST APIs 和数据库的基础知识。在面试时不能解释 大数据的 3Vs数据仓库的特性 会令人相当失望。此外,了解架构组件也是值得的。例如,在 这篇文章 中,我讨论了数据仓库架构和迁移到云端时的关键考虑因素。

7. 能够独立工作和学习

这不言而喻:随着技术的快速发展,你必须成为一个自我驱动的学习者,愿意不断学习和尝试新工具。这并不意味着你需要跟随每一个趋势,而是要保持开放的心态。

8. 编程技能

编程并不意味着你必须是一个 “黑客”,并且需要整天只写代码。更重要的是能够 快速学习 和知道如何编写 良好的抽象。在数据工程领域,这意味着 你知道如何编写 DRY 代码Don’t Repeat Yourself),即:你不会将相同的代码从一个脚本复制粘贴到另一个脚本,而是知道如何 以模块化和可重用的方式编写函数或类。干净的代码可以被重用、扩展和参数化,易于维护,并且可以节省你和他人的时间。

举个例子:我曾在一家公司工作,那里的项目几乎没有模块化。在几乎每个 Python 项目中,人们都会复制相同的代码来建立日志记录、连接到数据仓库并从中加载一些数据,或者建立一个 S3 客户端并从某个 S3 桶中下载 CSV 文件。为了改善这一点,我创建了一个 Python 包

  • 它包含了几乎所有项目中所需的功能,我将其推送到一个新的 GitHub 仓库中。

  • 这个软件包可以通过以下方式在任何地方安装:

    pip install git+https://github.com//<PACKAGE_NAME>.git。

从长远来看,这个软件包为我们节省了大量时间,并使代码库更加干净。

如果你是 Python 初学者,那么你不需要学习如何创建包。一开始,如果你能编写好的 Python 函数并且知道如何使用基础的数据处理包如Pandas,那可能已经足够了。

许多公司也寻找了解 Scala、Java、R 或 C 的数据显示工程师(或任何其他语言)——无论编程语言是什么,如果你理解数据处理的基本数据类型以及函数式编程模块化的原则,你可以获得更好的工作。

9. 命令行

能够使用Linux操作系统并通过bash 命令与其交互,是使你更加高效的关键技能之一。

许多框架和云服务的工作方式是通过声明性语言(如 Dockerfile 或 Kubernetes YAML 文件)定义资源和服务,然后通过命令行界面(CLI)进行部署。这种范式通常被称为基础设施即代码。例如,AWS CLI 允许你仅通过提交 bash 命令到 AWS API 来配置整个资源集群。其他云提供商(如 GCP 或 Azure)也提供类似的命令行接口。

10. 软技能

有些人可能会期望数据工程师只是做 ETL 和数据处理。但在每个工作中,拥有补充你个人资料的技能是有益的。假设你有两个候选人:

  1. 一位优秀的编码员但公共演讲能力差,

  2. 一位普通的编码员,但同时是一位出色的公共演讲者。

你会选择谁?许多公司会选择后者。雇主寻找全面发展的个人,他们还具备重要的软技能,如项目管理、公共演讲、文档编写,或擅长主持和组织活动。

在你的职业前景中起重要作用的因素

数据工程工作的薪资因地点、行业、所需技能和经验水平而异。下面,我列出了决定薪资和未来增长的 7 个最重要因素。有些因素很明显,但有些可能会让你感到惊讶:

  1. 地点——即使你申请的是远程工作,公司的薪资可能还是会根据你所在国家的生活标准来决定,以反映生活成本等因素。

  2. 行业——金融、汽车、科技或制药行业的公司通常支付的薪资比初创公司和电子商务公司要高得多。

  3. 工作经验——招聘人员对此非常关注,尽管这些年数本身并不能真正反映你从之前的工作中学到了多少东西,

  4. 专业知识——经验年限并不等同于专业知识(至少我认为是这样)。有时,人们在 Spark、Linux、Dask 或高级 SQL 方面表现出色。如果你能证明你真的对这些有深入了解,这可能比 20 年的拖拽式 ETL 经验更有价值。

  5. 实践经验——在工程领域,没有什么比实践经验更有价值。如果我们不能将知识应用于现实生活中,我们的知识是没有意义的。做个人项目并进行实践。不要只是阅读一些东西并认为你已经掌握了——如果你没有应用它,那一切只是你很快会忘记的理论

  6. 教育背景——我个人发现招聘人员并不会像我预期的那样关注你的教育背景。当然,他们会查看你是否拥有学士、硕士甚至博士学位,但招聘人员通常不太关心你毕业于哪个大学或你的专业是什么。认证也是如此——许多技术经理更看重你在特定工具或编程语言上的实际经验,而不是任何官方的知识证明,他们可能更愿意在技术面试中亲自验证你的知识,而不是依赖证书。

  7. 你的特殊技能、领域知识和软技能例如,处理冲突的能力)比你预期的更重要。招聘人员经常可能会拒绝某人,因为他们觉得这个人可能不适合团队和公司的文化。

面试准备

我听说过一些申请者在电话面试中无法回答关于他们申请的公司在做什么的问题。另外,像谈谈你自己你为什么想换公司这样的问题非常普遍,提前考虑一下这些问题是很好的。

此外,如果你计划申请,你应该为一些基础技术问题做好准备。许多数据工程经理会要求你设计一个星型模式,或者给你一些编码问题,例如SQL 窗口函数、生成器、广播、Python 中的列表解析,Docker 镜像和 Docker 容器之间的区别,或者你会如何创建 Docker 镜像和运行 Docker 容器。

最后,相信自己并保持自信。

原文。已获得许可转载。

相关:

更多相关话题