日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一名數據工程師的自白

工程師人生 ? 來源:網絡整理 ? 作者:工程師吳畏 ? 2018-10-08 09:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

2011年,我作為一名商業(yè)智能工程師加入 Facebook。到了 2013 年離開的時候,我的職稱是數據工程師。

獲得這個職稱,并不是因為我被升職或是分配。而是 Facebook 覺得我們的工作已經超越了典型的商業(yè)智能。我們?yōu)樽约簞?chuàng)造的這個新角色是個全新的學科。

我的團隊處在這場變革的前線。我們一直在開發(fā)新的技能呢、新的處理方式、新的工具,而且通常與傳統(tǒng)方式背道而馳。

我們是先頭部隊!我們是數據工程師!

數據工程是什么?

數據科學作為一個學科,已度過其自我肯定和自我定義的青春期。而處在同期的數據工程,是個年齡稍小的弟弟,但是也在度過相似的階段。數據工程學科以其兄長為榜樣,但也在相反的領域定義自己,并找尋屬于自已的身份。

數據工程師也像數據科學家一樣要寫代碼。數據科學家有很好的分析能力,并且對數據可視化很感興趣。與數據科學家不同,而且受啟發(fā)于我們更顯成熟的父學科——軟件工程,數據工程師要構建工具、基礎設施、框架和服務。事實上可以證明,相比數據科學,數據工程更接近軟件工程。

如果討論與既有職責的關系,數據工程領域可以認為是商業(yè)智能和數據倉庫的超集,而且更多的元素是從軟件工程得來的。這個學科也囊括了所謂的“大數據”分布式系統(tǒng)的相關領域內容,以及廣泛的Hadoop生態(tài)圈、流式處理和大規(guī)模計算的相關概念。

在還沒有正規(guī)化的數據基礎架構團隊的小公司里,數據工程的職責也會涵蓋搭建和維護組織數據基礎架構的工作任務。這包括搭建和維護像 Hadoop/Hive/HBase、Spark 平臺之類的活。

在小一些的環(huán)境里,人們傾向使用 Amazon 或 Databricks之類的托管服務,或者從 Cloudera 或 Hortonworks 之類的廠商獲取支持,這本質上就是將數據工程的職責外包給了其他公司。

在大一些的環(huán)境里,由于對數據基礎架構團隊的需求越來越高時,組織更傾向于專門指定或者開設一個正式的角色來處理這些工作。在這些組織中,這個把數據工程流程自動化的職責,同時落到了數據工程團隊和數據基礎架構團隊手中,而且兩個團隊合作解決高級問題也是很常見的。

雖然這個角色在工程方面的范圍在擴大,但其他原本作為商業(yè)工程角色的應關注的方面,卻變得越來越次要。比如像構建和維護大量的報表和儀表板,已不是一個數據工程師的主要關注領域。

我們現在有了更好的自服務工具,可以讓分析師、數據科學家和廣義的“信息工作者”變得更精通數據,可以獨自應付數據的使用。

ETL 在變化

我們也觀察到從拖拽式 ETL (Extract Transform and Load) 工具到一種更加可編程化的方式的大體轉變。像 Informatica、IBM Datastage、Cognos、AbInitio 和 Microsoft SSIS 之類的平臺技術掌握在現在的數據工程師中并不常見,取而代之的是更通用的軟件工程技能,和對編程或配置驅動的平臺技術的掌握,像 Airflow、Oozie、Azkabhan 或 Luigi。工程師開發(fā)和維護自己的任務編排器/調度器也是很常見的。

有很多不使用拖拽工具開發(fā)復雜軟件的理由:但最重要的是代碼才是對軟件最好的抽象。討論這個話題超出了本文的范圍,但是也很容易推導出為什么要用代碼寫 ETL,原因和寫其他軟件是一樣的。代碼允許任意程度的抽象,允許使用熟悉的方法進行所有邏輯處理,可以很好地和源控制集成,也易于版本管理和協(xié)作。事實上 ETL 工具暴露圖形接口給用戶像是數據處理發(fā)展史上的一個迂回,這個話題都可再單獨寫成一篇有意思的博客了。

讓我們強調下這個事實,傳統(tǒng) ETL 工具所暴露出的這種抽象是達不到目的的。我們當然需要將數據處理、計算以及存儲進行抽象,但我覺得解決的方法并不是將 ETL 元語(比如源/目標、聚合、過濾條件)展現為一種拖拽風格,需要的是一種更高級的抽象。

舉例說明,在現代數據環(huán)境中做抽象, A/B 測試框架的試驗設置:整個試驗是什么樣的?相關的處理操作是什么?應該暴露給多少比例的用戶?預期每個試驗會影響哪些度量?試驗什么時候生效?在這個例子中,我們有一個需要接收精確、高級輸入,需要進行復雜統(tǒng)計學運算以及得出計算結果的框架。我們期望如果引入一個新的試驗,就可以相應進行額外的運算并得到額外的結果。在這個例子中,我們要注意的重點是,在這個抽象中輸入變量并不是由傳統(tǒng) ETL 工具給出的,而且在拖拽界面中構建這樣一個抽象也毫無操作性可言。

對于現代數據工程師而言,傳統(tǒng)的 ETL 工具大多數都已過時了,因為無法用代碼表達邏輯。因此所需要的抽象也就不能用這些工具直觀表達?,F在大家知道了數據工程師的職責包括了設計大量的 ETL,并且知道了一套全新工具和方法論是必需的,可以說這迫使這個學科從頭重建。數據工程師需要新的技術棧、新的工具、一套新的約束,并且很多時候,是新的一代人。

數據建模在改變

典型的數據建模技術(比如星型模型),曾經定義了我們典型地通過數據倉庫為分析工作進行數據建模的方法,但現在已不像之前那樣重要。傳統(tǒng)的數據倉庫最佳實踐已經改變。存儲和計算要比以前便宜,而且隨著可線性擴展的分布式數據庫的出現,工程時間成了更緊缺的資源。

這里列舉一些數據建模技術方面的變化:

進一步反范式化:在維度中維護代理鍵這件事可能很棘手,而且這使得事實表的可讀性變差。而在事實表中使用自然的讓人可讀的鍵和維度屬性變得越來越普遍,省去了在分布式數據庫中大量繁重的 join 操作。同時要注意像 Parquet 或者 ORC 之類的序列化格式,或者 Vertica 之類的數據庫引擎,都提供了編碼和壓縮的支持,這可以減少通常由于使用反范式化所帶來的性能損失。那些系統(tǒng)本身具備為存儲進行范式化的能力。

blobs(二進制大對象):現代數據庫已經逐漸通過本地類型和方法支持 blobs。這讓數據建模師學會了新的招式,并且可以讓事實表根據需要一次存儲多個粒度的數據。

動態(tài)模式:由于 MapReduce 的出現,以及文檔存儲越來越流行,和 blobs 在數據庫中的支持,不需要執(zhí)行 DML(數據操作語言)就改進數據庫模式變得更容易。這使得以迭代方式去建數據倉庫更加容易,也免得開發(fā)前需要達成完全一致和認同。

系統(tǒng)化維度快照(在每個 ETL 調度周期為維度存儲一個全量副本,通常存儲在獨立的表分區(qū))作為一種處理緩慢變化維(SCD, slowly changing dimension)的通用方法,只要很少的工作量,是一種簡單通用的方式。而且這種方式不像經典方式,在寫 ETL 或者類似的查詢時可以很容易掌握。將維度屬性反范式化到事實表,在事務發(fā)生時就直接記錄維度屬性值,,也是一種容易并且相對廉價的方式?;叵胍幌?,復雜的 SCD 建模技術其實是不直觀的,而且降低了可訪問性。

一致性:一致性維度和度量在現在的數據環(huán)境中,依然是極為重要的。但是隨著數據倉庫需求的快速變化,隨著更多的團隊和角色被邀請到這項工作中貢獻力量,一致性就少了一分必要性,更多的是一種權衡。當分歧的痛點變得無法控制,其背后也會產生一致和趨同。

角色和任務

數據倉庫

“數據倉庫是一個專門為查詢和分析而構造的事務數據副本?!?— Ralph Kimball

數據倉庫是一個面向主題的、集成的、時變的、非易失的集合,用來支持管理層的決策制定過程。 — Bill Inmon

數據倉庫依然像之前一樣重要,數據工程師負責了很多方面的數據倉庫建設和運維的工作。數據工程師的焦點就是數據倉庫和相關工作。

現代數據倉庫應該是比之前更加開放的設施,歡迎數據科學家、分析師和軟件工程師去參與到建設和維護中。如果企業(yè)活動限制了什么角色才能夠管理數據流程,那數據顯然就過于中心化了。雖然這允許隨著組織的數據需求而相應擴展,但是經常導致形成了更混亂的、走形的、不完善的基礎設施。

數據工程團隊通常會擁有數據倉庫中幾片有保證的、高質量的區(qū)域。比如在 Airbnb,有一組“核心”模式(schema)由數據工程團隊管理,這里有清晰定義和度量的服務等級協(xié)議(SLA,service level agreement),嚴格遵守命名約定,并且相關的流水線代碼遵循一套最佳實踐。

為數據對象制定標準、最佳實踐和認證流程的“卓越中心”,這也成為數據工程團隊的職責之一。團隊可以進而去參與或領導一個項目來分享其核心能力,以幫助其他團隊成為更佳的數據倉庫公民。比如,Facebook 有一個“數據夏令營”的培訓項目,Airbnb 正在開發(fā)一個類似的“數據大學”的項目,數據工程師在這里主持會議來教大家如何熟練使用數據。

數據工程師也是數據倉庫的“圖書管理員”,編目和組織元數據,定義從倉庫歸檔或提取數據的流程。在一個快速生長、迅速演變、輕度混亂的數據環(huán)境,元數據管理和元數據工具成為一個現代數據平臺的關鍵組件。

性能調整和優(yōu)化

隨著數據變得比以前更加具有戰(zhàn)略意義,企業(yè)為他們的數據基礎設施建設所提高的預算確實令人印象深刻。這樣,數據工程師把時間花在數據處理和存儲的性能調整和優(yōu)化上也就更加合理。由于在方面的預算極少縮減,優(yōu)化往往從在相同的資源下完成更多事情的角度出發(fā),或者是從試圖使資源利用和開銷的指數級增長線性化的角度。

知道了數據工程棧發(fā)展的復雜性正在暴增,我們可以設想優(yōu)化這個棧和流程的復雜度也同樣充滿挑戰(zhàn)??赡芎苋菀淄ㄟ^很小的努力獲得巨大成功的地方,收益遞減法則通常是適用的。

建設可以隨企業(yè)規(guī)模增長的基礎設施(或在其上建設),并時刻保持資源意識,無疑是對數據工程師有好處的。

數據集成

數據集成,是通過數據交換來集成業(yè)務和系統(tǒng)其背后的實際操作,它和以前同樣重要,也和以前同樣充滿挑戰(zhàn)。由于軟件即服務(SaaS, Software as a Service)逐漸成為企業(yè)運營的新標準方式,跨越這些系統(tǒng)來同步相關數據就成為更加關鍵的需求了。不僅SaaS服務本身需要最新的數據來運行,我們通常也想把產生在SaaS側的數據拿到數據倉庫,來和我們其他數據一起進行分析。當然SaaS經常會提供它們自己的分析,但是沒有系統(tǒng)地支持企業(yè)中其余數據所能提供的視角,通常得把這些數據拉取回來。

不集成和共享通用的主鍵,就讓 SaaS 服務重新定義參考數據,這簡直是場災難,應該極力避免。誰也不想人為地在兩個不同的系統(tǒng)中維護兩份雇員和顧客列表。最糟糕的是,必須要在把他們的 HR 數據拉回倉庫時做模糊匹配。

最壞的情況,企業(yè)高管經常會在不實際考慮數據集成難度的情況下和 SaaS 提供商簽約。提供商特意計劃好淡化這些集成任務,以促進他們的銷售,然后讓數據工程師受困于去做充滿疑問的、不被重視的工作。更不用說事實上典型的 SaaS API 經常設計不合理、文檔不清晰,并且是“敏捷”的:就是說你可以認為它們會在不做通知的情況下改版。

服務

數據工程師工作在一種更高層級的抽象中,就是說在某些場景下要提供服務和工具來使數據工程師、數據科學家或者分析師要手動來完成的工作自動化。

這里列舉數據工程師和數據基礎架構工程師可能構建和維護的一小部分服務。

數據攝?。簢@“爬取”數據庫、載入日志、從外部存儲和API獲取數據的服務和工具

指標計算:計算和匯總相關參與指標、增長指標或細分指標量的框架

異常檢測:使數據處理自動化,以便當異常事件發(fā)生或趨勢明顯變化時警示相關人員

元數據管理:可以生成和消費元數據,并方便在數據倉庫中查找信息的相關工具。

實驗:A/B測試和實驗框架通常是一個重要的企業(yè)分析,并帶有一個關鍵的數據工程模塊。

檢測儀:從日志時間和相關屬性到那些事件,數據工程師

會話:為幫助分析師理解用戶行為,為理解時間行為序列專門設計的流水線。

就像軟件工程師一樣,數據工程師必須不斷關注工作自動化、構建抽象來使他們能應對重重困難。雖然環(huán)境不同,可自動化的工作的性質不同,但自動化的需求在各個環(huán)境是普遍存在的。

技能要求

精通SQL:如果說英語是商業(yè)語言,那 SQL 就是數據語言。如果英語都說不好的話,作為一個商務人士又能做的怎么樣呢?雖然一代又一代技術老去和退出舞臺,但是 SQL 一直作為數據的通用語言頑強地活著。數據工程師應該能夠使用 SQL 表達各種復雜邏輯,比如使用“關聯子查詢”和窗口函數。

SQL/DML/DDL 原語已經足夠簡單,對于數據工程師來說應該完全掌握了。除了SQL的聲明特性,數據工程師還應該有能力理解數據庫的執(zhí)行計劃,并明白每個步驟是什么,明白索引是如何工作的,明白不同的 join 算法,以及執(zhí)行計劃的分布維度(distributed dimension)。

數據建模技術:對于數據工程師來說,應該對實體/關系模型形成一種認知反射(cognitive reflex),并且對范式化有清晰的認識,同時對權衡反范式化有敏銳的直覺。數據工程師應該熟悉維度建模和相關概念和用語。

ETL 設計:編寫高效、可擴展的、“可演化”的 ETL 才是關鍵。我正計劃在接下來的博文中具體討論這個主題。

架構規(guī)劃:就像任何專業(yè)領域的專家,數據工程師需要對大多數工具、平臺、庫和其他可以運用的資源有一個較高層級的理解。比如不同種類的數據庫、計算引擎、流處理器、消息隊列、工作流編排器、序列化格式和其他相關技術背后的屬性、用例和微妙之處。設計解決方案時,數據工程師必須能夠對使用哪種技術做出好的選擇,能夠想象到如何使它們協(xié)同工作。

總而言之

通過過去 5 年在硅谷 Airbnb、Facebook、Yahoo! 的工作,以及和像 Google、Netflix、Amazon、Uber、Lyft 等幾十個各種體量的公司的各種類型的數據團隊的豐富交流,我發(fā)現大家對于“數據工程師”的發(fā)展成什么樣,看法越來越趨于一致,而且我覺得有必要分享一些我的發(fā)現。

我希望這篇文章可作為某種意義上的數據工程宣言,并且我希望可以在從事相關領域的社區(qū)中激起回應。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7349

    瀏覽量

    95055
  • 工程師
    +關注

    關注

    59

    文章

    1603

    瀏覽量

    71230
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何成為一名高薪嵌入式工程師?

    學嵌入式,也可以輕松入門。 如果你已經明確好,想要從事嵌入式開發(fā),想要成為一名高薪的嵌入式工程師,那下面這幾點建議請好好看看: 、夯實技術基礎 ?編程語言 C語言:嵌入式開發(fā)的核心語言,需
    發(fā)表于 04-09 09:03

    電子工程師的雙標瞬間 #電子 #電子愛好者 #電子工程師 #揚興科技 #雙標

    電子工程師
    揚興科技
    發(fā)布于 :2026年03月02日 18:04:13

    電子工程師設計要點與經驗分享

    電子工程師設計要點與經驗分享 作為一名資深電子工程師,在硬件設計開發(fā)領域摸爬滾打多年,積累了不少寶貴的經驗和見解。今天就和大家分享些電子工程師
    的頭像 發(fā)表于 02-03 11:10 ?342次閱讀

    電子工程師看書的四個階段 #電子 #硬件工程師 #電子愛好者 #反轉 #揚興科技

    硬件工程師
    揚興科技
    發(fā)布于 :2026年01月17日 17:29:53

    什么是BSP工程師

    、嵌入式系統(tǒng) 要明白什么是嵌入式軟件工程師,我們先從嵌入式系統(tǒng)(嵌入式設備)說起。維基百科上對嵌入式系統(tǒng)的定義如下: 嵌入式系統(tǒng)(Embedded System),是種嵌入機械或電氣系統(tǒng)內部
    發(fā)表于 01-13 06:54

    電子工程師設計要點與經驗分享

    電子工程師設計要點與經驗分享 作為一名資深電子工程師,在多年的硬件設計開發(fā)工作中,積累了不少寶貴的經驗和見解。下面就和大家分享些電子設計方面的關鍵要點和實際案例。 文件下載
    的頭像 發(fā)表于 01-07 13:55 ?556次閱讀

    硬件工程師都在逛的7個論壇你都知道嗎? #科普 #電子 #硬件工程師 #電子愛好者

    硬件工程師
    揚興科技
    發(fā)布于 :2025年12月25日 18:32:00

    硬件工程師面試必會:10個核心考點#硬件設計 #硬件工程師 #電路設計 #電路設計

    硬件工程師
    安泰小課堂
    發(fā)布于 :2025年09月23日 18:00:33

    作為一名PCB質檢工程師,我為什么在用手持式面銅測試儀?

    在PCB行業(yè),銅厚直是決定阻抗、散熱與可靠性的關鍵指標。過去,工程師把板子搬到實驗室、等待臺式銅厚儀出結果;作為一名PCB質檢工程師,如今,我更愿意把“實驗室”揣進口袋——手持式面銅
    發(fā)表于 08-11 11:59

    做了電子工程師之后,最好拍的視頻出現了#硬件設計 #電子DIY #電子工程師

    電子工程師
    安泰小課堂
    發(fā)布于 :2025年06月24日 17:45:57
    安吉县| 富蕴县| 凤庆县| 张家口市| 涿鹿县| 鞍山市| 贡觉县| 海安县| 广平县| 靖边县| 彰化市| 永仁县| 新化县| 小金县| 玉山县| 新民市| 凤冈县| 建瓯市| 大理市| 开化县| 衡南县| 镇巴县| 商南县| 临朐县| 团风县| 民权县| 汤阴县| 肥东县| 嘉祥县| 宣恩县| 江都市| 收藏| 石阡县| 沂水县| 石河子市| 西华县| 唐河县| 胶州市| 龙山县| 伊川县| 阜宁县|