亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
1272
2022-05-30
目錄
數據工程師做什么的?
數據工程師的職責是什么?
數據流
數據規范化和建模
數據清洗
數據可訪問性
什么是常見的數據工程技能?
一般編程技巧
數據庫技術
分布式系統和云工程
什么不是數據工程?
數據科學
商業智能
機器學習工程
結論
大數據。云數據。AI 訓練數據和個人識別數據。數據無處不在,并且每天都在增長。軟件工程已經發展到包括數據工程,這是一個直接關注數據的傳輸、轉換和存儲的子學科,這才有意義。
也許您已經看到過大數據職位發布,并對處理 PB 級數據的前景很感興趣。也許您對生成對抗網絡如何從底層數據創建逼真的圖像感到好奇。也許您甚至從未聽說過數據工程,但對開發人員如何處理當今大多數應用程序所需的大量數據感興趣。
無論您屬于哪個類別,這篇介紹性文章都適合您。您將對該領域有一個廣泛的了解,包括數據工程是什么以及它需要什么樣的工作。
在本文中,您將了解:
數據工程領域的現狀如何
數據工程如何在行業中使用
數據工程師的各種客戶是誰
什么是數據工程領域的一部分,什么不是
如何決定是否要將數據工程作為一門學科
首先,您將回答有關該領域最緊迫的問題之一:無論如何,數據工程師都做什么?
數據工程師做什么的?
數據工程是一門非常廣泛的學科,有多個標題。在許多組織中,它甚至可能沒有特定的頭銜。因此,最好首先確定數據工程的目標,然后討論什么樣的工作會帶來預期的結果。
數據工程的最終目標是提供有組織、一致的數據流,以實現數據驅動的工作,例如:
訓練機器學習模型
進行探索性數據分析
使用外部數據填充應用程序中的字段
這種數據流可以通過多種方式實現,所需的特定工具集、技術和技能將因團隊、組織和預期結果而異。然而,一個常見的模式是數據管道。這是一個由獨立程序組成的系統,這些程序對傳入或收集的數據執行各種操作。
數據管道通常分布在多個服務器上:
此圖是一個簡化的示例數據管道,可讓您對可能遇到的架構有一個非常基本的了解。您會在更下方看到更復雜的表示。
數據可以來自任何來源:
物聯網設備
車輛遙測
房地產數據饋送
Web 應用程序上的正常用戶活動
您能想到的任何其他收集或測量工具
根據這些來源的性質,傳入的數據將以實時流或以某種規律的節奏分批進行處理。
數據所經過的管道是數據工程師的職責。數據工程團隊負責設計、構建、維護、擴展,通常還負責支持數據管道的基礎設施。他們還可能負責傳入的數據,或者更常見的是負責數據模型以及數據的最終存儲方式。
如果您將數據管道視為一種應用程序,那么數據工程開始看起來像任何其他軟件工程學科。
許多團隊也在朝著構建數據平臺的方向發展。在許多組織中,僅僅有一個管道將傳入數據保存到某個地方的 SQL 數據庫是不夠的。大型組織有多個團隊,需要對不同類型的數據進行不同級別的訪問。
例如,人工智能 (AI)團隊可能需要標記和拆分已清理數據的方法。商業智能 (BI)團隊可能需要輕松訪問聚合數據并構建數據可視化。數據科學團隊可能需要數據庫級別的訪問權限才能正確探索數據。
如果您熟悉 Web 開發,那么您可能會發現這種結構類似于模型-視圖-控制器 (MVC) 設計模式。使用 MVC,數據工程師負責模型,AI 或 BI 團隊處理視圖,所有組在控制器上進行協作。構建滿足所有這些需求的數據平臺正成為擁有依賴數據訪問的不同團隊的組織的主要優先事項。
既然您已經了解了數據工程師的一些工作以及他們與所服務的客戶之間的聯系,那么了解更多關于這些客戶以及數據工程師對他們的職責會很有幫助。
數據工程師的職責是什么?
依賴數據工程師的客戶就像數據工程團隊本身的技能和產出一樣多樣化。無論您從事哪個領域,您的客戶始終會決定您解決什么問題以及您如何解決這些問題。
在本節中,您將通過數據需求的視角了解數據工程團隊的一些常見客戶:
數據科學和人工智能團隊
商業智能或分析團隊
產品團隊
在這些團隊中的任何一個能夠有效工作之前,必須滿足某些需求。特別是,數據必須是:
可靠地路由到更廣泛的系統中
標準化為合理的數據模型
清理以填補重要空白
所有與成員相關的人都可以訪問
這些要求在Monica Rogarty的優秀文章The AI Hierarchy of Needs 中有更詳細的說明。作為數據工程師,您有責任滿足客戶的數據需求。但是,您將使用多種方法來適應他們各自的工作流程。
數據流
要對系統中的數據進行任何處理,首先必須確保它能夠可靠地流入和流過系統。輸入幾乎可以是您可以想象的任何類型的數據,包括:
JSON或 XML 數據的實時流
每小時更新一批視頻
每月抽血數據
每周批量標記圖像
來自部署傳感器的遙測
數據工程師通常負責使用這些數據,設計一個系統,該系統可以將這些數據作為來自一個或多個來源的輸入,對其進行轉換,然后將其存儲給客戶。這些系統通常稱為ETL管道,代表提取、轉換和加載。
數據流責任主要屬于提取步驟。但數據工程師的責任并不止于將數據拉入管道。他們必須確保管道足夠健壯,以應對意外或格式錯誤的數據、源離線和致命錯誤。正常運行時間非常重要,尤其是在您使用實時數據或時間敏感數據時。
無論您的客戶是誰,您維護數據流的責任都非常一致。但是,有些客戶可能比其他客戶要求更高,尤其是當客戶是依賴于實時更新數據的應用程序時。
數據規范化和建模
流入系統的數據很棒。然而,在某些時候,數據需要符合某種架構標準。規范化數據涉及使用戶更容易訪問數據的任務。這包括但不限于以下步驟:
刪除重復項(重復數據刪除)
修復沖突數據
使數據符合指定的數據模型
這些過程可能發生在不同的階段。例如,假設您在一個擁有數據科學家和 BI 團隊的大型組織中工作,他們都依賴于您的數據。您可以將非結構化數據存儲在數據湖中,供您的數據科學客戶用于探索性數據分析。您還可以將規范化的數據存儲在關系數據庫中,或者存儲在更專門構建的數據倉庫中,以供 BI 團隊在其報告中使用。
您可能有更多或更少的客戶團隊,或者可能有一個使用您數據的應用程序。下圖顯示了上一個管道示例的修改版本,突出顯示了某些團隊可能訪問數據的不同階段:
在此圖中,您會看到一個假設的數據管道以及您經常會發現不同客戶團隊在工作的階段。
如果您的客戶是產品團隊,那么架構良好的數據模型至關重要。一個深思熟慮的數據模型可能是一個緩慢的、幾乎沒有響應的應用程序和一個運行時好像它已經知道用戶想要訪問什么數據的區別。這些類型的決策通常是產品和數據工程團隊協作的結果。
數據規范化和建模通常是 ETL轉換步驟的一部分,但它們不是該類別中唯一的步驟。另一個常見的轉型步驟是數據清理。
數據清洗
數據清理與數據規范化密切相關。有些人甚至認為數據規范化是數據清理的一個子集。但是,雖然數據規范化主要側重于使不同的數據符合某些數據模型,但數據清理包括許多使數據更加統一和完整的操作,包括:
將相同的數據轉換為單一類型(例如,強制整數字段中的字符串為整數)
確保日期格式相同
如果可能,填寫缺失的字段
將字段的值限制在指定范圍內
刪除損壞或不可用的數據
數據清洗可以適應上圖中的重復數據刪除和統一數據模型步驟。但實際上,這些步驟中的每一個都非常大,并且可以包含任意數量的階段和單獨的過程。
您為清理數據而采取的具體操作將高度依賴于輸入、數據模型和所需的結果。然而,干凈數據的重要性是不變的:
數據科學家需要它來執行準確的分析。
機器學習工程師需要它來構建準確且可推廣的模型。
商業智能團隊需要它為業務提供準確的報告和預測。
產品團隊需要它來確保他們的產品不會崩潰或向用戶提供錯誤信息。
數據清理責任落在許多不同的肩上,取決于整個組織及其優先級。作為數據工程師,您應該努力盡可能地自動化清理,并對傳入和存儲的數據進行定期抽查。您的客戶團隊和領導層可以深入了解什么構成了符合其目的的干凈數據。
數據可訪問性
數據可訪問性不像數據規范化和清理那樣受到關注,但它可以說是以客戶為中心的數據工程團隊更重要的職責之一。
數據可訪問性是指客戶訪問和理解數據的難易程度。根據客戶的不同,這是一種非常不同的定義:
數據科學團隊可能只需要可通過某種查詢語言訪問的數據。
分析團隊可能更喜歡按某些指標分組的數據,可通過基本查詢或報告界面訪問。
產品團隊通常希望通過不經常更改的快速和直接查詢訪問數據,并著眼于產品性能和可靠性。
由于較大的組織為這些團隊和其他人提供相同的數據,因此許多組織已經開始為不同的團隊開發自己的內部平臺。一個很好的成熟例子是叫車服務優步,它分享了其令人印象深刻的大數據平臺的許多細節。
事實上,許多數據工程師發現自己正在成為平臺工程師,這表明數據工程技能對數據驅動型業務的持續重要性。因為數據可訪問性與數據的存儲方式密切相關,所以它是 ETL加載步驟的主要組成部分,它指的是如何存儲數據以供以后使用。
現在您已經遇到了一些常見的數據工程客戶并了解了他們的需求,現在是時候更仔細地了解您可以開發哪些技能來幫助滿足這些需求。
什么是常見的數據工程技能?
數據工程技能在很大程度上與軟件工程所需的技能相同。然而,數據工程師往往更關注一些領域。在本節中,您將了解幾個重要的技能組合:
一般編程概念
數據庫
分布式系統和云工程
這些中的每一個都將在使您成為全面的數據工程師方面發揮關鍵作用。
一般編程技巧
數據工程是軟件工程的一門專業,因此軟件工程的基礎知識位于此列表的頂部是有道理的。與其他軟件工程專業一樣,數據工程師應該了解DRY(不要重復自己)、面向對象編程、數據結構和算法等設計概念。
與其他專業一樣,也有一些受歡迎的語言。在撰寫本文時,您在數據工程職位描述中最常看到的是 Python、Scala 和Java。是什么讓這些語言如此受歡迎?
Python 的流行有幾個原因。最大的問題之一是它的無處不在。從許多方面來看,Python 是世界上最流行的三大編程語言之一。例如,它在 2020 年 11 月的TIOBE 社區指數中排名第二,在 Stack Overflow 的2020 年開發者調查中排名第三。
它也被機器學習和人工智能團隊廣泛使用。緊密合作的團隊通常需要能夠使用同一種語言進行交流,而 Python 仍然是該領域的通用語言。
Python 流行的另一個更有針對性的原因是它在Apache Airflow等編排工具和Apache Spark等流行工具的可用庫中的使用。如果一個組織使用這些工具,那么了解他們使用的語言是必不可少的。
Scala也很受歡迎,與 Python 一樣,部分原因是使用它的工具很受歡迎,尤其是 Apache Spark。Scala 是一種運行在 Java 虛擬機 (JVM) 上的函數式語言,使其能夠與 Java 無縫結合使用。
Java在數據工程中并不那么流行,但您仍然會在很多職位描述中看到它。這部分是因為它在企業軟件堆棧中無處不在,部分是因為它與 Scala 的互操作性。隨著 Scala 被用于 Apache Spark,一些團隊也使用 Java 是有道理的。
除了一般的編程技能,熟悉數據庫技術也是必不可少的。
數據庫技術
如果您要移動數據,那么您將大量使用數據庫。從廣義上講,您可以將數據庫技術分為兩類:SQL 和 NoSQL。
SQL 數據庫是關系數據庫管理系統(RDBMS),它對關系進行建模并使用結構化查詢語言或 SQL 進行交互。這些通常用于對由關系定義的數據進行建模,例如客戶訂單數據。
注意:如果您想了解有關 SQL 以及如何在 Python 中與 SQL 數據庫交互的更多信息,請查看Python SQL 庫簡介。
NoSQL 通常意味著“其他一切”。這些是通常存儲非關系數據的數據庫,例如:
像Redis或 AWS 的DynamoDB這樣的鍵值存儲
MongoDB或Elasticsearch等文檔存儲
圖數據庫,如Neo4j
其他不太常見的數據存儲
雖然您不需要了解所有數據庫技術的來龍去脈,但您應該了解這些不同系統的優缺點,并能夠快速學習其中的一兩個。
數據工程師工作的系統越來越多地位于云上,數據管道通常分布在多個服務器或集群上,無論是否在私有云上。因此,未來的數據工程師應該了解分布式系統和云工程。
分布式系統和云工程
ETL 管道等數據工程技術的主要優點之一是它們適合于分布式系統的實現。一個常見的模式是讓獨立的管道段在由消息隊列(如RabbitMQ或Apache Kafka )編排的單獨服務器上運行。
了解如何設計這些系統、它們的好處和風險是什么以及何時應該使用它們是必不可少的。
這些系統需要許多服務器,而地理上分散的團隊通常需要訪問它們包含的數據。Amazon Web Services、Google Cloud 和 Microsoft Azure 等私有云提供商是構建和部署分布式系統的非常流行的工具。
對云提供商的主要產品以及一些更流行的分布式消息傳遞工具的基本了解將幫助您找到第一份數據工程工作。您可以期望在工作中更深入地學習這些工具。
到目前為止,您已經了解了很多關于數據工程是什么。但是因為該學科沒有標準的定義,并且因為有很多相關的學科,所以您也應該了解數據工程不是什么。
什么不是數據工程?
許多領域都與數據工程密切相關,您的客戶通常是這些領域的成員。了解您的客戶很重要,因此您應該了解這些領域以及它們與數據工程的區別。
以下是一些與數據工程密切相關的領域:
數據科學
商業智能
機器學習工程
在本節中,您將從數據科學開始,仔細研究這些領域。
數據科學
如果數據工程取決于您如何移動和組織大量數據,那么數據科學則取決于您如何處理這些數據。
數據科學家通常會查詢、探索并嘗試從數據集中獲取見解。他們可能會編寫一次性腳本以用于特定數據集,而數據工程師傾向于使用軟件工程最佳實踐創建可重用的程序。
數據科學家使用統計工具,例如k 均值聚類和回歸以及機器學習技術。他們經常使用 R 或 Python 并嘗試從數據中獲得洞察力和預測,以指導企業各個層面的決策。
注意:您想探索數據科學嗎?查看以下任一學習路徑:
具有 Python 核心技能的數據科學
數據收集和存儲
數據科學數學
用于數據科學的 Pandas
數據科學家通常具有科學或統計背景,他們的工作風格反映了這一點。他們致力于回答特定研究問題的項目,而數據工程團隊則專注于構建可擴展、可重用和快速的內部產品。
數據科學家回答研究問題的一個很好的例子可以在生物技術和健康技術公司中找到,在這些公司中,數據科學家探索有關藥物相互作用、副作用、疾病結果等的數據。
商業智能
商業智能類似于數據科學,但有一些重要區別。數據科學專注于預測和做出未來預測,而商業智能則專注于提供業務當前狀態的視圖。
這兩個組都由數據工程團隊提供服務,甚至可能在同一個數據池中工作。但是,商業智能與分析業務績效和從數據生成報告有關。然后,這些報告可幫助管理層在業務層面做出決策。
與數據科學家一樣,商業智能團隊依賴數據工程師來構建工具,使他們能夠分析和報告與其關注領域相關的數據。
機器學習工程
機器學習工程師是您經常接觸的另一個群體。你可能會和他們做類似的工作,或者你甚至可能被嵌入到一個機器學習工程師團隊中。
和數據工程師一樣,機器學習工程師更專注于構建可重用的軟件,而且很多人都有計算機科學背景。然而,他們不太專注于構建應用程序,而更專注于構建機器學習模型或設計用于模型的新算法。
注意:如果您對機器學習領域感興趣,請查看Machine Learning With Python學習路徑。
產品團隊經常在面向客戶的產品中使用機器學習工程師構建的模型。您作為數據工程師提供的數據將用于訓練他們的模型,使您的工作成為與您合作的任何機器學習團隊的能力的基礎。
例如,機器學習工程師可能會為您公司的產品開發一種新的推薦算法,而數據工程師會提供用于訓練和測試該算法的數據。
需要了解的一件重要事情是,您在此處查看的領域通常并不明確。具有數據科學、BI 或機器學習背景的人可能會在組織中從事數據工程工作,而作為數據工程師,您可能會被要求協助這些團隊的工作。
你可能有一天會發現自己重新構建了一個數據模型,另一個構建了一個數據標記工具,然后優化了一個內部深度學習框架。優秀的數據工程師靈活、好奇,并愿意嘗試新事物。
結論
這完成了您對數據工程領域的介紹,這是對具有計算機科學和技術背景或興趣的人最需要的學科之一!
在本教程中,您學習了:
什么數據工程師做
數據工程師的客戶是誰
數據工程常見的技能有哪些
什么數據工程不是
現在,您可以決定是否要深入了解這個令人興奮的領域。數據工程聽起來很吸引你嗎?你有興趣更深入地探索它嗎?讓我們在評論中知道!
數據庫 數據挖掘
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。