再一次問好! 文章的標題不言而喻。 期待課程的開始
關於如何抓住資料工程浪潮而不讓它把您拖入深淵的簡單指南。
如今似乎每個人都想成為資料科學家。 但是數據工程呢? 本質上,這是數據分析師和數據科學家的混合體; 資料工程師通常負責管理工作流程、處理管道和 ETL 流程。 由於這些功能的重要性,這是目前正在積極發展的另一個流行的專業術語。
高薪和巨大的需求只是這份工作極具吸引力的一小部分! 如果你想加入英雄行列,開始學習永遠不嫌晚。 在這篇文章中,我收集了所有必要的資訊來幫助您踏出第一步。
什麼是數據工程?
老實說,沒有比這更好的解釋了:
「科學家可以發現一顆新星,但他無法創造一顆。 他必須請一名工程師來幫他做這件事。”
——戈登‧林賽‧格萊格
由此可見,資料工程師的角色是非常重要的。
顧名思義,數據工程關注的是數據,即數據的交付、儲存和處理。 因此,工程師的主要任務是為數據提供可靠的基礎設施。 如果我們看一下人工智慧的需求層次結構,資料工程佔據了前2-3個階段: 收集、移動與儲存、資料準備.
資料工程師做什麼的?
隨著大數據的出現,責任範圍也發生了巨大變化。 如果以前這些專家使用 Informatica ETL、Pentaho ETL、Talend 等工具編寫大型 SQL 查詢並提取數據,那麼現在對數據工程師的要求增加了。
大多數有資料工程師職缺的公司都有以下要求:
- 精通 SQL 和 Python。
- 具有雲端平台的經驗,尤其是 Amazon Web Services。
- 了解 Java/Scala 者優先。
- 對 SQL 和 NoSQL 資料庫(資料建模、資料倉儲)有很好的理解。
請記住,這些只是必需品。 從這個清單中,可以假設資料工程師是軟體開發和後端領域的專家。
例如,如果一家公司開始從各種來源產生大量數據,那麼身為資料工程師,您的任務就是組織資訊的收集、處理和儲存。
在這種情況下使用的工具清單可能有所不同,這完全取決於資料量、接收速度和異質性。 大多數公司根本不處理大數據,因此作為集中式儲存庫,即所謂的資料倉儲,您可以使用 SQL 資料庫(PostgreSQL、MySQL 等)以及一小組腳本,將資料輸入到倉庫。
Google、Amazon、Facebook 或 Dropbox 等 IT 巨頭有更高的需求:Python、Java 或 Scala 的知識。
- 大數據經驗:Hadoop、Spark、Kafka。
- 演算法和資料結構知識。
- 了解分散式系統的基礎知識。
- 使用 Tableau 或 ElasticSearch 等資料視覺化工具的經驗將優先考慮。
也就是說,有一個明顯的向大數據的轉變,即在高負載下的處理。 這些公司對系統容錯能力提出了更高的要求。
資料工程師 Vs. 數據科學家
好吧,這是一個簡單而有趣的比較(沒有什麼個人的),但實際上它要複雜得多。
首先,您應該知道資料科學家和資料工程師的角色和技能的劃分存在著許多模糊性。 也就是說,您很容易對成為成功的資料工程師需要哪些技能感到困惑。 當然,這兩個角色有一些重疊的技能。 但也有一些截然相反的技能。
數據科學是一項嚴肅的業務,但我們正在走向一個功能性數據科學的世界,從業者可以在其中進行自己的分析。 為了啟用資料管道和整合資料結構,您需要資料工程師,而不是資料科學家。
資料工程師比資料科學家更受歡迎嗎?
- 是的,因為在製作胡蘿蔔蛋糕之前,您需要先收穫、去皮並儲存胡蘿蔔!
資料工程師比任何資料科學家都更了解編程,但在統計方面,情況恰恰相反。
但這是資料工程師的優勢:
如果沒有他/她,原型模型(通常由 Python 檔案中的一段品質很差的程式碼組成,從資料科學家那裡獲得並以某種方式產生結果)的價值趨於為零。
沒有資料工程師,這段程式碼永遠不會成為一個項目,任何業務問題都無法有效解決。 資料工程師正在嘗試將這一切轉化為產品。
資料工程師應該了解的基本訊息
因此,如果這份工作激發了您的光芒並且您充滿熱情 - 您可以學習它,您可以掌握所有必要的技能並成為數據工程領域的真正搖滾明星。 是的,即使沒有程式設計技能或其他技術知識,您也可以實現這一目標。 這很難,但是有可能!
第一步是什麼?
你應該對什麼是什麼有一個大概的了解。
首先,數據工程指的是電腦科學。 更具體地說,您必須了解有效的演算法和資料結構。 其次,由於資料工程師與資料打交道,因此有必要了解資料庫的原理及其背後的結構。
例如,傳統的 B 樹 SQL 資料庫是基於 B 樹資料結構,以及現代分散式儲存庫中的 LSM 樹和雜湊表的其他修改。
*這些步驟是基於一篇很棒的文章
1. 演算法和資料結構
使用正確的資料結構可以顯著提高演算法的效能。 理想情況下,我們都應該在學校學習資料結構和演算法,但這很少涉及。 無論如何,認識永遠不嫌晚。
以下是我最喜歡的學習資料結構和演算法的免費課程:
另外,不要忘記 Thomas Corman 關於演算法的經典著作 -
- 要提高您的技能,請使用
力碼 .
您還可以透過 YouTube 上卡內基美隆大學的精彩影片深入了解資料庫的世界:
2.學習SQL
我們的一生都是數據。 為了從資料庫中提取這些數據,您需要與它「說」相同的語言。
SQL(結構化查詢語言)是資料域中的通訊語言。 不管別人怎麼說,SQL 已經存在了,仍然存在,而且將會存在很長一段時間。
如果您從事開發工作很長時間,您可能已經注意到有關 SQL 即將消亡的謠言會定期出現。 該語言開發於 70 年代初,至今仍深受分析師、開發人員和愛好者的歡迎。
如果不了解 SQL,就無法進行資料工程,因為您將不可避免地必須建立查詢來檢索資料。 所有現代大資料倉儲都支援 SQL:
- 亞馬遜Redshift
- 惠普Vertica
- 神諭
- SQL服務器
……以及許多其他人。
為了分析儲存在分散式系統(例如 HDFS)中的大量數據,發明了 SQL 引擎:Apache Hive、Impala 等。看,它不會去任何地方。
如何學習SQL? 只要在實踐中去做就可以了。
為此,我建議您查看一個出色的教程,順便說一句,該教程是免費的,來自
這些課程的特別之處在於它們有一個互動式環境,您可以在瀏覽器中直接編寫和執行 SQL 查詢。 資源
3. Python 和 Java/Scala 編程
為什麼你應該學習Python程式語言,我已經在文章中寫過
- 阿帕契‧卡夫卡 (Scala)
- Hadoop、HDFS(Java)
- Apache Spark(斯卡拉)
- 阿帕契卡桑德拉 (Java)
- HBase(Java)
- 阿帕契蜂巢 (Java)
要了解這些工具的工作原理,您需要了解編寫它們的語言。 Scala 的函數式方法可以讓您有效地解決平行資料處理問題。 不幸的是,Python 無法誇耀速度和並行處理。 一般來說,了解多種語言和程式設計範例有利於解決問題的方法的廣度。
要深入了解 Scala 語言,您可以閱讀
至於Python,我相信
4.處理大數據的工具
以下是大數據領域最受歡迎的工具清單:
- Apache Spark
- 阿帕奇卡夫卡
- Apache Hadoop(HDFS、HBase、Hive)
- Apache Cassandra
您可以在這個令人驚奇的文章中找到有關構建大型數據塊的更多信息
- Hadoop 的介紹可以是
掌握 Hadoop 的完整指南(免費) . - 對我來說最全面的 Apache Spark 指南是 -
Spark:完整指南 .
5、雲端平台
至少了解一個雲端平台是資料工程師職位申請人的基本要求之一。 雇主更喜歡亞馬遜網路服務,谷歌的雲端平台位居第二,微軟Azure位列前三名。
您必須熟悉 Amazon EC2、AWS Lambda、Amazon S3、DynamoDB。
6. 分佈式系統
使用大數據意味著存在獨立運作的電腦集群,它們之間的通訊透過網路進行。 集群越大,其成員節點發生故障的機率就越大。 要成為一名出色的資料科學家,您需要了解分散式系統的問題和現有解決方案。 這個地區既古老又複雜。
安德魯·塔南鮑姆 (Andrew Tanenbaum) 被認為是該領域的先驅。 對於那些不害怕理論的人,我推薦他的書
我認為
對於那些喜歡看影片的人,Youtube 上有一個課程
7. 數據管道
身為資料工程師,資料管道是不可或缺的。
大多數時候,資料工程師建立了一個所謂的資料管道,也就是說,他創建了一個將資料從一個地方傳遞到另一個地方的流程。 這些可以是自訂腳本,用於存取外部服務的 API 或進行 SQL 查詢、擴充資料並將其放入集中式儲存(資料倉儲)或非結構化資料儲存(資料湖)中。
總結:資料工程師的基本清單
總而言之,需要充分理解以下內容:
- 資訊系統;
- 軟體開發(敏捷、DevOps、設計技術、SOA);
- 分散式系統和平行程式設計;
- 資料庫基礎知識-規劃、設計、操作和故障排除;
- 實驗設計 - A/B 測試以證明概念、確定可靠性、系統性能並開發可靠的路徑以快速提供良好的解決方案。
這些只是成為資料工程師的一些要求,因此請學習和理解資料系統、資訊系統、持續交付/部署/整合、程式語言和其他電腦科學主題(並非所有學科領域)。
最後,我想說的最後但非常重要的事情。
成為資料工程師的道路並不像看起來那麼簡單。 他不原諒,他使人沮喪,你必須為此做好準備。 這段旅程中的某些時刻可能會迫使您放棄。 但這是真正的工作和學習過程。
只是不要從一開始就粉飾它。 旅行的重點是盡可能多地學習並為新的挑戰做好準備。
這是我遇到的一張很棒的圖片,很好地說明了這一點:
是的,請記得避免倦怠並休息。 這也是非常重要的。 祝你好運!
朋友們,你們覺得這篇文章怎麼樣? 我們邀請您參加
來源: www.habr.com