數據工程師最近今年可謂是炙手可熱。根據 hired.com 發布的數據,2019 年該崗位 需求量已上漲 45%,在舊金山灣區,數據工程師的平均工資可達 16,000 美刀。那么,成為一名合格的數據工程師要滿足什么條件呢?
數據工程師的工作
數據工程師的工作與數據息息相關,這一點光是從名字上就可窺見一二。與從已有數據中提煉信息的數據分析師不同,數據工程師要做的是搭建用于傳遞、存儲和處理信息的架構,負責數據的收集、轉移、存儲,以及數據準備工作。根據 AI 行業的需求金字塔,這些任務都是處于塔的最底層。也就是說,如果一家企業的業務是基于數據或者 AI 的話,那么數據工程師的雇傭和培訓應當是必要的。
每一天都會有無數的數據生成,人們時時刻刻都可以通過手機等隨身攜帶的設備,通過聯網產出各種內容。在過去,數據工程師們需要通過利用 Informatica、Pentaho、Talend 等科技大廠發行的工具編寫復雜的 SQL 查詢命令,搭建 ETL(抽取 Extract、轉換 Transform、加載 Load)流程。當今市場對數據工程師的技能需求則變得更加寬泛,需要至少滿足以下條件:
掌握 SQL、Python 知識
有在工作中使用云服務提供商 AWS、Azure 或者 GCP 提供的服務的經驗
熟悉 Java/Scala 是大加分項
熟悉 SQL/NoSQL 數據庫(數據建模、數據倉庫、性能優化)
可以看出,數據工程師在專業技能方面的需求與一般的后端工程師非常類似。事實上,如果一家企業在數據量方面一直呈增長趨勢的話,后端工程師轉職數據工程師是個不錯的選擇。
數據工程師在具體的技能方面也因公司規模、數據量和數據速度的不同而異。以 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:數據庫的通用語言
作為數據工作的常用語言之一 SQL,自它在 70 年代的誕生開始,歷經風雨,直到現在依然經久不衰。十年二十年后,SQL 恐怕還會繼續堅強地活著。不信你看現在流行的這些數據庫,哪個不支持 SQL?
PostgreSQL、MySQL、MS SQL Server、Oracle Database
Amazon Redshift、Apache Druid、Yandex ClickHouse、
HP Vertica、Greenplum
大數據的生態系統中有許多不同的 SQL 引擎:Presto(現為 Trino)、Hive、Impala 等等?;ㄐr間把 SQL 吃透會帶來意想不到的好處。
SQL 的純新手可以從 Mode 的 SQL 教程 《SQL 入門》 開始看,熟練之后可以去 DataCamp 參加互動課程。推薦一些比較不錯的課程:
SQL 中級課程
在 SQL 中 join 數據
PostgreSQL 匯總統計與窗口函數
SQL 最好參考資料應該數“現代 SQL”和“快用索引吧,Luke!”兩大網站。還是那句話,實踐出真知,Leetcode 的數據庫題庫 刷題避無可避。順帶一提,作者的另一篇關于 SQL 窗口函數 的文章也很值得一讀。
編程:Python、Java,以及 Scala
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 編程》 一書也是個很好的起始點。
編程:Python、Java,以及 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 數據工程師 - 基于角色。
分布式系統的基礎
當今社會數據量之龐大,是不可能全部塞到一臺計算機里的,將數據分散在不同節點上的分布式系統由此應運而生。優秀的數據工程師必須要清楚地了解分布式系統背后的基本原理。這一領域的入門教材有很多:
麻省理工的 分布式系統講座,主講 Robert Morris
分布式系統講座,主講 Martin Kleppmann
分布式系統講座,主講 Lindsey Kuper
至于實體書目,我會推薦 Martin Kleppmann 編寫的 《設計數據密集型應用》 一書。如果你有興趣,還可以參觀他的 博客。另一位大佬 Vaidehi Joshi 發表的關于分布式系統的一系列 博文 也很值得一看。
數據管道
數據管道是指將數據進行整合的過程,它的構建同樣是數據工程師的主要責任之一。作為一名合格的數據工程師,你應當能夠將多個來源的數據可靠地交付、加載和轉換到一個特定的目的地,這個目的地通常是指中央數據倉庫或數據湖。你可選的工具有很多:Apache Airflow、Spotify 的 Luigi、Perfect 或者 Dagster。如果你更喜歡無代碼的解決方案,那么 Apache 的 NiFi 是個很好的選擇。
總 結
數據工程師并不適合單打獨斗,與數據分析師、數據科學家、基礎設施工程師,以及其他利益相關者通力合作,才能發揮出數據工程師的最大價值。因此,不要忘記軟技能的培養,要具備同理心、理解業務領域、擁有開放的心態等等。
上一條:沒有了
下一條:數據分析師和數據工程師的區別是什么? |
返回列表 |