數據工程師:神話與現實

已發表: 2018-05-10

從自動駕駛汽車到圖像中的自動標記,數據科學已經走過了漫長的道路。 數據科學家和分析師已經成為任何組織不可或缺的一部分,因為他們增加了價值。 但是,老實說,數據科學家的好壞取決於他們使用的數據。 如今,大多數組織的數據以多種格式存儲在眾多平台上。 數據工程師的需求來了!

數據工程師是使這些數據對數據科學家和分析師可用的人。 數據工程師負責構建將大量數據轉換為數據科學家可用的格式的管道。 他們大多在幕後工作,因此缺乏數據科學家/分析師的所有魅力——但請注意,他們對任何組織的運作同樣(如果不是更多)必不可少。
如果數據科學家是賽車手,那麼數據工程師就是賽車製造商。 前者獲得了沿著賽道加速的興奮和在鼓掌的人群面前獲勝的快感。 另一方面,後者獲得了調整引擎和創造強大、強大的機器的樂趣。 賽車製造商使駕駛員的工作變得更容易(或更難,取決於製造商的質量)。
如何過渡到數據分析?

在這方面,數據工程師幾乎是任何數據分析團隊的無名英雄。 如果沒有優秀的數據工程師,數據科學家只會摸不著頭腦,在未格式化的數據中尋找線索。
讓我們看看數據工程師的工作需要做什麼。
為了更好地理解,我們假設您是 Swiggy 的競爭對手(我們將其命名為 Twiggy)的數據工程師。 您有一個用戶可以在任何設備上使用並訪問您的服務的應用程序。 他們點菜,訂單被重定向到適當的餐廳,食物從那裡取走,然後送到你手上。
要使此服務保持同步,您需要:

  • 一款面向用戶的移動應用
  • 餐廳老闆的移動應用程序
  • 一個強大的服務器,可以一次處理多個請求。

正如您現在可能已經理解的那樣,此應用程序將生成大量數據。 此外,您將需要一些數據存儲:

  • 包含用戶和餐館詳細信息的數據庫。
  • 服務器訪問日誌。 這些將包括從應用程序向服務器發出的任何請求。
  • 包含所有服務器端錯誤的服務器錯誤日誌。
  • 應用事件日誌。 這些將包含有關用戶或餐館老闆在應用程序中採取的操作的信息。
  • 包含基於應用程序的錯誤的應用程序錯誤日誌。
  • 客戶服務數據庫。 這將包含有關您與客戶互動的數據。

現在,假設您團隊的一位數據科學家想要分析您的服務上的用戶行為,並查看哪些行為與高消費用戶相關。 為了幫助他們創建此功能,您需要結合服務器訪問日誌和應用程序事件日誌中的所有信息。
您需要:

  • 定期收集應用分析日誌。
  • 將應用分析日誌與相關用戶的服務器日誌條目相結合。
  • 開發一個返回任何用戶的事件歷史的 API。

那裡有很多工作!
為此,您需要創建一個管道,該管道可以有效地實時攝取移動應用程序日誌和服務器日誌,解析它們,並將它們鏈接到適當的用戶。 此外,您需要將解析後的日誌存儲在數據庫中,以便 API 可以輕鬆查詢它們。 您需要在負載均衡器後面啟動許多服務器以解析傳入日誌。
您將遇到的大部分問題都與分佈式系統和可靠性有關。 如果您有數百萬台設備要收集日誌並有動態需求(在下午,您會收到很多日誌條目,但在午夜時不會那麼多),您將需要開發一個可以自動增加和減少服務器計數的系統取決於交通。
掌握數據科學的主要步驟

大致而言,通用數據工程管道中的操作經歷以下階段:

  • 攝取:收集所需的數據。
  • 處理:處理數據以獲得期望的結果。
  • 存儲:存儲結果以便更快地檢索。
  • 訪問:啟用工具來訪問數據管道的結果。

數據工程師應具備以下領域的知識。

  • 數據倉庫:
    • RDBMS,如 MySQL、MS SQL Server 等。
    • NoSQL 數據庫,如 HBase、MongoDB、CouchDB、Cassandra 等。
  • 數據採集:
    • RESTful API
    • 數據建模知識和 SQL 專業知識。
  • 數據轉換:
    • ETL 工具,如 Informatica、Datastage、Redpoint 等。
    • 任何腳本語言,如 Python、Ruby、Perl 等。

讓我們看看圍繞這些數據工程師的生活和工作的一些神話和誤解。

目錄

誤區 1:數據工程師從收集的數據中提取價值。

在收集數據和提取知識之間有很多事情要做。 數據工程師主要負責將數據轉換為適合科學家分析和工作的形式。 在這方面,他們並沒有從數據中提取任何價值,事實上,他們將數據放在盤子上,呈現給數據科學家,然後他們從中發現價值。

誤區 2:數據工程師需要使所有數據保持原始狀態。

慢慢看上面這句話,你就會意識到這句話的荒謬。 數據工程師全天處理傳入的數據流。 這些數據需要立即清理並採取行動,以免它變得陳舊。 陳舊,我們的意思是缺乏洞察力和陳舊。 因此,數據工程師不會著手使所有數據都保持原始狀態。 他們處理手頭的數據以及手頭問題所需的其他數據。 清理完整的數據集需要幾個月的時間,到那時它將毫無用處。
數據科學統計學基礎

誤區 3:數據工程師將數據轉儲到現成的工具上,並享受干淨/可行的數據作為輸出。

請不要在任何數據工程師面前大聲說出來。 曾經。 沒有自尊的數據工程師會容忍這種公然的侮辱。 與任何其他工程師(軟件、機械、化學等)一樣,數據工程師需要始終保持思維上限。 數據工程中沒有萬能的方法,數據工程師需要塑造算法以不斷適應他們的用例。 他們需要了解圍繞其工作的最新技術和方法,以確保完美的效率。

誤區四:數據工程師只是從事大數據工作的軟件工程師。

軟件工程師從事移動/網絡應用程序開發。 他們的工作涉及許多不同的問題,困難在於管理任務——思考、交流和組織代碼。 另一方面,數據工程師通常遇到的問題較少,但個別問題在技術上要困難得多。 從前景到技能,數據工程師的一切都與軟件工程師完全不同。
誰是數據科學家、數據分析師和數據工程師?

獲得世界頂尖大學的數據科學認證學習行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

數據工程類似於經典的 IT 角色嗎?

對於計算機行業以外的人來說,“數據工程師”和“軟件工程師”可能聽起來可以互換,因為兩者都很大程度上依賴於編程技能。 但實際上他們是不同領域的專家。 軟件工程師的主要目標是創建用戶友好的網站。 數據工程師建立用於存儲、合併​​和檢索數據的系統,然後軟件開發人員使用這些系統來構建系統和應用程序。 數據工程師還可以為所有組織數據以及版本控制系統創建和維護持續集成和交付 (CI/CD) 管道,以確保整個基礎架構的數據質量。

成為數據工程師是否必須具有大學教育或高級學位?

作為一名數據工程師,你不需要學位,儘管某些雇主可能更喜歡至少擁有學士學位的候選人。 沒有任何學術課程或在線課程可以讓您完全準備好創建可以從各種來源移動數據、更改數據並將其存儲以供分析的數據系統。 事實上,最成功的數據工程師在與真實客戶一起在現實世界中運作時,會在工作中學到很多東西。 但是,是的,對於數據工程師來說,掌握使用某些工具(如 Amazon Athena、Amazon Redshift、Apache Spark 等)的良好技能並了解數據管理最佳實踐非常重要。

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

對於數據驅動的業務,數據工程至關重要,但數據工程師究竟是做什麼的呢? 這是成為一名成功的數據工程師的途徑

1. 精通編程:如果你想成為一名成功的數據工程師,首先要從復習你的編程基礎開始。 Python 和 Scala 是該領域最常用的技術。
2. 學習如何自動化和編寫腳本:學習自動化對數據工程師來說至關重要。 由於要對數據執行許多任務,這些任務可能很乏味或可能會定期發生。 一些重要的自動化工具是 Shell 腳本和 Shell 中的數據處理。
3. 知道如何使用你的數據庫:這可以通過學習 SQL 和數據建模來完成。
4. 熟練的數據處理技術:要掌握數據處理技術,在將結果加載到目標數據庫之前,學習如何批量和流處理數據非常重要。