如何成為一名合格的數據工程師?

2021-12-25 AI前線
數據工程師最近今年可謂是炙手可熱。根據 hired.com 發布的數據,2019 年該崗位 需求量已上漲 45%,在舊金山灣區,數據工程師的平均工資可達 16,000 美刀。那麼,成為一名合格的數據工程師要滿足什麼條件呢?

數據工程師的工作與數據息息相關,這一點光是從名字上就可窺見一二。與從已有數據中提煉信息的數據分析師不同,數據工程師要做的是搭建用於傳遞、存儲和處理信息的架構,負責數據的收集、轉移、存儲,以及數據準備工作。根據 AI 行業的需求金字塔,這些任務都是處於塔的最底層。也就是說,如果一家企業的業務是基於數據或者 AI 的話,那麼數據工程師的僱傭和培訓應當是必要的。

每一天都會有無數的數據生成,人們時時刻刻都可以通過手機等隨身攜帶的設備,通過聯網產出各種內容。在過去,數據工程師們需要通過利用 Informatica、Pentaho、Talend 等科技大廠發行的工具編寫複雜的 SQL 查詢命令,搭建 ETL(抽取 Extract、轉換 Transform、加載 Load)流程。當今市場對數據工程師的技能需求則變得更加寬泛,需要至少滿足以下條件:

可以看出,數據工程師在專業技能方面的需求與一般的後端工程師非常類似。事實上,如果一家企業在數據量方面一直呈增長趨勢的話,後端工程師轉職數據工程師是個不錯的選擇。

數據工程師在具體的技能方面也因公司規模、數據量和數據速度的不同而異。以 FAANG(Facebook、亞馬遜、蘋果、網飛、谷歌的統稱)為例,他們通常需要員工滿足:

掌握 Python、Java 或 Scala 知識

有使用 Apache Hadoop,Kafka 以及 Spark 等大數據工具的工作經驗

深入理解常用算法和數據結構

熟悉分布式系統

有使用商業智能工具 Tableau、QlikView、Looker 或者 Superset 等工具的開發經驗

數據工程師每天的主要工作就是和數據打交道,熟悉資料庫工作原理會讓你的工作變得更輕鬆。數據工程作為工程的一大分支領域,意味著你需要在編程方面,尤其是常用算法和數據結構,有一定的知識。舉例來說,常見 SQL 資料庫 SQLite、PostgreSQL、MySQL 背後的數據結構都是 B-Tree。

這方面的視頻課程有很多,比較推薦的有 Coursea 上的 《數據結構與算法》 專業課,用來入門剛剛好。其他的演講還可以看 Alex Petrov 的 」為什麼所有的開發者都應該了解資料庫存儲「。

Alex 還發布過一些關於資料庫的系列博文,很值得一看:

磁碟 IO,Part 1:IO 的幾種類型

磁碟 IO,Part 2:IO 的更多類型

磁碟 IO,Part 3:LSM 樹

磁碟 IO,Part 4:B 樹和 RUM 猜想

磁碟 IO,Part 5:LSM 樹中的訪問模式

除了視頻課程,Thomas Cormen 聯合著作的 《算法入門》 可以說是在算法和數據結構方面最全面的參考書目了。理論還要搭配實踐才能熟能生巧,所以快去 leetcode.com 刷題吧!

另外,卡內基梅隆大學在油管上發布的關於資料庫的課程錄像也很值得參考:

資料庫系統入門(2019 秋季)

高級資料庫系統(2020 春季)

作為數據工作的常用語言之一 SQL,自它在 70 年代的誕生開始,歷經風雨,直到現在依然經久不衰。十年二十年後,SQL 恐怕還會繼續堅強地活著。不信你看現在流行的這些資料庫,哪個不支持 SQL?

大數據的生態系統中有許多不同的 SQL 引擎:Presto(現為 Trino)、Hive、Impala 等等。花些時間把 SQL 吃透會帶來意想不到的好處。

SQL 的純新手可以從 Mode 的 SQL 教程 《SQL 入門》 開始看,熟練之後可以去 DataCamp 參加互動課程。推薦一些比較不錯的課程:

SQL 中級課程

在 SQL 中 join 數據

PostgreSQL 匯總統計與窗口函數

SQL 最好參考資料應該數「現代 SQL」和「快用索引吧,Luke!」兩大網站。還是那句話,實踐出真知,Leetcode 的資料庫題庫 刷題避無可避。順帶一提,作者的另一篇關於 SQL 窗口函數 的文章也很值得一讀。

Python 的流行不僅僅體現在 web app 的搭建上,在數據分析和數據科學領域,它仍然是大眾的選擇。豐富的生態系統和龐大的社區團體讓 Python 成為了繼 C 和 Java 之後,排名第三的最常用程式語言(數據源自 TIOBE 索引)。

至於 Java 和 Scala,大多的資料庫系統都是用它們編寫的:

Apache Kafka(Scala)

Hadoop HDFS (Java)

Apache Spark (Scala)

Apache Cassandra (Java)

HBase(Java)

Apache Hive、Presto(Java)

了解資料庫系統使用的程式語言是掌握它們工作原理的好起點。Python 最大的弱點在於其性能不足,熟悉一門可以與之互補的、高性能語言會讓你的簡歷脫穎而出。

Scala 的入門教程推薦參考 「推特的 Scala 學院」,Scala 作者編寫 《Scala 編程》 一書也是個很好的起始點。

在大數據的生產環境中有很多實用工具,其中最流行的是:

Apache Kafka:行業領先的消息隊列 / 事件總線 / 事件流技術

Apache Spark:大規模數據處理的統一分析引擎

Apache Hadoop:由不同工具、庫和框架組成的大數據框架,其中包括分布式文件系統(HDFS)、Apache Hive、HBase 等等

Apache Druid:實時分析資料庫

貪多嚼不爛,完整地將其中最流行的一款工具吃透,連其背後的基本概念也要了解才是最好的。具體可以參考 2013 年 Jay Kreps(Apache Kafka 的聯合創始人之一)發表的論文 《日誌:每個軟體工程師都應該知道實時數據的統一抽象》。

雲是大數據的最終歸宿。作為求職者,你至少要有在任何一個雲平臺的開發經驗。世界頂尖雲平臺提供商當屬 亞馬遜雲服務(AWS),其次是 微軟的 Azure(MSA),排行第三的是 谷歌雲平臺(GCP)。

這些頂尖雲提供商都可以提供行業認可的證書。舉例來說,AWS 上最適合數據工程師的證書是 AWS Certified Data Analytics - Specialty,GCP 的則是 專業數據工程師 認證,MSA 的是 Azure 數據工程師 - 基於角色。

當今社會數據量之龐大,是不可能全部塞到一臺計算機裡的,將數據分散在不同節點上的分布式系統由此應運而生。優秀的數據工程師必須要清楚地了解分布式系統背後的基本原理。這一領域的入門教材有很多:

至於實體書目,我會推薦 Martin Kleppmann 編寫的 《設計數據密集型應用》 一書。如果你有興趣,還可以參觀他的 博客。另一位大佬 Vaidehi Joshi 發表的關於分布式系統的一系列 博文 也很值得一看。

數據管道是指將數據進行整合的過程,它的構建同樣是數據工程師的主要責任之一。作為一名合格的數據工程師,你應當能夠將多個來源的數據可靠地交付、加載和轉換到一個特定的目的地,這個目的地通常是指中央數據倉庫或數據湖。你可選的工具有很多:Apache Airflow、Spotify 的 Luigi、Perfect 或者 Dagster。如果你更喜歡無代碼的解決方案,那麼 Apache 的 NiFi 是個很好的選擇。

數據工程師並不適合單打獨鬥,與數據分析師、數據科學家、基礎設施工程師,以及其他利益相關者通力合作,才能發揮出數據工程師的最大價值。因此,不要忘記軟技能的培養,要具備同理心、理解業務領域、擁有開放的心態等等。

如果你有什麼想要補充的,歡迎在評論區留下你的看法。

原文連結:

https://khashtamov.com/en/how-to-become-a-data-engineer/

你也「在看」嗎?👇

相關焦點

  • 如何成為一名合格的數據分析師,數據分析師需要哪些技能?
    隨著大數據時代的到來, 企業對數據分析師崗位的需求量也是越來越大。但是如何才能成為一名合格的數據分析師,為企業創造更好的價值,是一名數據分析師時刻反省的核心問題。當然還有部分即將就業、剛入行久、轉行加入數據分析領域的群體,對如何成為一名合格的數據分析師,數據分析師需要哪些技能還存在諸多疑惑,那麼今天們就一起探討一下。1、 理論基礎篇作為一名合格的數據分析師,你需要有應用數學、統計學、數量經濟學專業數學知識背景。
  • 如何成為一名合格的CAE工程師
    在本文中我將談談如何成為一個合格的有限元分析工程師。作為一個合格的有限元分析工程師,至少應該具備以下三個方面的技能和經驗:堅實的理論基礎,包括力學理論(對於結構有限元分析工程師)和有限元理論必要的程序使用經驗,對常用的商業有限元分析程序能夠熟練應用工程實踐的經驗,對於不同的工程問題能夠準確的做出判斷和確定分析方案在這三個方面中,比較容易解決的是程序使用,通常盜版軟體和程序教程是很容易獲得的
  • 如何成為一名大數據工程師?
    在如今有時候有數據的地方就叫大數據,這未免有些誇張,在本文中統稱為數據工程師和數據科學家。先了解一下,數據工程師究竟做什麼事?一個人怎麼樣成為數據工程師?我們將討論這個有趣的領域以及如何成為數據工程師。數據工程師都做什麼?
  • 如何成為一名CAE工程師
    在本文中我將談談如何成為一個合格的有限元分析工程師。作為一個合格的有限元分析工程師,至少應該具備以下三個方面的技能和經驗: 堅實的理論基礎,包括力學理論(對於結構有限元分析工程師)和有限元理論 必要的程序使用經驗,對常用的商業有限元分析程序能夠熟練應用 工程實踐的經驗,對於不同的工程問題能夠準確的做出判斷和確定分析方案在這三個方面中,比較容易解決的是程序使用,通常盜版軟體和程序教程是很容易獲得的,一般通過一些練習題就可以很快掌握程序的使用
  • 如何成為一名射頻工程師?
    在上期的文章中,我們整理了最近一段時間射頻工程師的招聘情況,那些年薪百萬的職位。那麼如何成為一名射頻工程師呢?
  • 如何才能成為一名DevOps工程師?
    也因此,我經常會被問到的一個問題就是:「如何才能成為一名 DevOps 工程師?」在本博客中,我將嘗試用自己在不同組織中實踐 DevOps 的經驗來回答這一問題。現在,業界的每個人都習慣用「DevOps 工程師」這個術語,但只要你理解了 DevOps 的理念,就會發現關於 DevOps 的真正含義有很多誤解。其中一個誤解是「自動化就是 DevOps」。
  • 如何成為一名成熟的軟體開發工程師?
    結果,他沒講故事,而是提了一個問題:如何成為一名成熟的軟體開發工程師?跟老張的首次見面,他穿著一件超人「鑽石logo」T恤,很典型的IT男打扮。問:「你是超人的粉絲嗎?」答:「不是啊,隨便穿的。」他認為,長期持有某一隻股票,需要邏輯+信念,但全靠信念是不行的,很多人剛開始信念很強,可能過兩天別人說的不一樣了就堅持不下去了。「還是要有很強的邏輯去支撐。」
  • 如何成為優秀的大數據工程師?
    在大數據布景之下,精通大數據的專業人才將成為企業最重要的事務人物,大數據從業人員薪酬持續增長,人才缺口巨大。那麼,如何成為優異的大數據工程師呢?今天就跟從小編一起來了解下吧!1.從才能上來剖析的,首要大數據工程師是需求有計算機編碼才能的,因為面對海量的非結構化數據,你要從中發掘出有價值的東西,需求規划算法與編寫程序去實現,而程式設計師最牛的才能就是編寫簡練高效的代碼,去實現人們對未來天馬行空的夢想,編碼才能越強的程式設計師越有可能成為優異的大數據工程師。
  • 如何成為一名優秀的網絡工程師?
    不管是網絡工程師、弱電、運維,每個技術人員心裡多多少少都有一個成為技術大牛的夢,畢竟「夢想總是要有的,萬一實現了呢」!
  • 如何成為一名優秀的iOS開發工程師
    >
  • 如何成為一名UG模具設計工程師?
    一、首先,需要知道模具工程師都有什麼崗位:1、模具設計 :模具
  • 如何成為一名 Top DevOps 工程師
    不過我並不贊同在一個小團隊中設置一個專職的 DevOps 人員,在我看來,一個DevOps 工程師,首先他得是一個合格的開發/測試/運維人員,devops表明他還擔負著另一個重要的職責。因為,假如 DevOps 脫離了實際的崗位,就猶如紙上談兵一般,無法觸碰團隊中的痛點,就無法解決實際問題。因此,一個「兼職」的 DevOps 才是我心目中理想的 DevOps 工程師。
  • 在未來,留學生如何成為一名大數據工程師,你需要會什麼技能?
    數據倉庫是收集、存儲和檢索所有原始數據的地方,如果沒有數據倉庫,一個數據科學家做的所有任務就會變得要麼太昂貴,要麼太大,以至於無法拓展。ETL(提取、轉換和載入)是數據工程師構建數據管道所遵循的步驟,它實際上是一份關於如何處理、轉換收集來的原始數據以備分析的藍圖。
  • 大疆工程師教你如何成為一名機器人工程師(上)
    個人認為機器人學是一個艱苦的道路,想要成為一個獨擋一面的機器人工程師需要多年理論和實踐的同步訓練。理論學習和動手實踐的過程還要互相排好時間表,在做某個實踐項目的同時去學習最相關理論往往可以達到事半功倍的效果,但是同時那些不太相關的理論會看起來非常枯燥,因此如何妥善安排自己的實踐項目也是很重要的事情。
  • 如何成為一名年薪50萬的AI工程師?
    如果你想成為一名年薪50萬的AI工程師,在所有事情開始之前,要把相關的環境設置好。
  • 如何成為數據分析師
    相比之下,從 2003 年興起的網際網路產品經理職位,就成熟一些,至少你可以找到大量的書,教你如何成為一名產品經理。而數據分析領域就沒這麼幸運了,相關的書籍雖然也有,但總覺得還沒到火候。    數據分析師的職責範圍   通過上面的角色劃分,我們可以清楚數據分析師在整個數據版圖中的位置。數據分析師一方面要和業務人員打交道,滿足業務人員的數據需求,另一方面,要藉助 ETL 工程師建模好的數據,以及數據平臺工程師開發的平臺,來更高效的完成工作。
  • 如何成為一名機器學習工程師,並很快找到工作?
    等一系列崗位增加然而,一個「不幸」的消息是41%的機器學習工程師的職位在發布60天後仍然空缺可見要成為每個公司都在尋找的稀有人才絕非易事根據 TechRepublic 的作者 Hope Reese 和 Brandon
  • 如何成為一名卓越的前端工程師
    最近我收到一封讀者來信讓我陷入了思考,信是這麼寫的:Hi Philip,您是否介意我問您是如何成為一名卓越 (great) 的前端工程師的?對此您有什麼建議嗎?我不得不承認,我很驚訝被問這樣的問題,因為我從來不覺得自己是個很卓越的前端工程師。甚至我入行頭幾年時並不認為自己可以做好這一行。我只確定自己比自己想像中還才疏學淺,而且大家面試我的時候都不知道從何問起。
  • 如何成為一名優秀的前端開發工程師
    前端工程師是軟體團隊重要的組成部分,不論是傳統的Web開發團隊、移動互聯開發團隊還是大數據開發團隊,都離不開前端工程師,可以說隨著目前軟體應用場景的增加,前端工程師也越來越重要,前端開發的邊界也在不斷獲得突破,形成了包含Web前端、移動端、小程序和部分後端開發任務的「大前端」生態。
  • 如何成為一名數據科學家?
    用過R、matlab、Octive、Python、SAS和Microsoft Analysis Services的人都推薦用Python。數據文明data-driven.pdf9.參與/solo個頂層產品用已掌握的數據科學和軟體工程技能做出個讓別人看了會點讚的成品出來,可以是網站、處理數據的新方法、炫酷的可視化等等。