數(shù)據(jù)賦能 UberUber 通過賦能數(shù)十億打車和快遞服務(wù),連接數(shù)以百萬計(jì)的乘客、企業(yè)、餐館、司機(jī)和快遞員,徹底改變了世界的出行方式。這個(gè)龐大的交通平臺(tái)的核心是大數(shù)據(jù)和數(shù)據(jù)科學(xué),它們支撐著 Uber 的所有工作,比如更好的定價(jià)和匹配、欺詐檢測(cè)、降低預(yù)計(jì)達(dá)到時(shí)間(ETA)和實(shí)驗(yàn)。每天 PB 級(jí)的數(shù)據(jù)被收集和處理,成千上萬用戶根據(jù)這些數(shù)據(jù)進(jìn)行分析決策,從而構(gòu)建 / 改進(jìn)這些產(chǎn)品。 規(guī)模擴(kuò)展帶來的問題雖然我們能夠擴(kuò)展我們的數(shù)據(jù)系統(tǒng),但以前,對(duì)于一些重要的數(shù)據(jù)問題,我們沒有給予足夠的關(guān)注,在規(guī)模擴(kuò)大之后,它們變得更加重要,涉及的具體問題包括:
這些問題并不是 Uber 獨(dú)有的——根據(jù)我們與其它公司的工程師和數(shù)據(jù)科學(xué)家的交流,這些問題很常見,特別是對(duì)于那些增長非??斓墓?。由于服務(wù)故障 / 中斷即時(shí)可見,所以我們對(duì)服務(wù)和服務(wù)質(zhì)量的關(guān)注比較多,而對(duì)數(shù)據(jù)和相關(guān)工具的關(guān)注往往比較少。但在規(guī)模比較大時(shí),解決這些問題,并使其與服務(wù)工具 / 管理的嚴(yán)格程度保持一致,變得極其重要,尤其是如果數(shù)據(jù)在產(chǎn)品功能和創(chuàng)新中扮演著關(guān)鍵角色,正如數(shù)據(jù)在 Uber 的角色一樣。 需要一種整體的數(shù)據(jù)解決方案下圖顯示了從移動(dòng)應(yīng)用程序和服務(wù)到數(shù)據(jù)倉庫和最終消費(fèi)面的高級(jí)數(shù)據(jù)流。我們最初只在數(shù)據(jù)流中出現(xiàn)數(shù)據(jù)問題的地方應(yīng)急性地解決了這些問題的癥狀,而沒有解決根本問題。我們認(rèn)識(shí)到,需要一種整體的方案來解決這些問題,并徹底解決其根源。我們的目標(biāo)是重新組織數(shù)據(jù)日志系統(tǒng)、工具和流程,從而逐步改變整個(gè) Uber 的數(shù)據(jù)質(zhì)量。我們召集了橫跨端到端數(shù)據(jù)流堆棧的團(tuán)隊(duì),其中包括來自堆棧各個(gè)部分的工程師和數(shù)據(jù)科學(xué)家,最終修改了 20 多個(gè)現(xiàn)有系統(tǒng)。 為了將精力集中在整體思考上,我們從 Rider 應(yīng)用程序上獲取了與行程和會(huì)話信息相關(guān)的關(guān)鍵數(shù)據(jù)“切片”,并嘗試為它們構(gòu)建一個(gè)真實(shí)數(shù)據(jù)源(source of truth,SoT),并且修復(fù)應(yīng)用程序上的日志記錄、數(shù)據(jù)處理工具、數(shù)據(jù)本身以及將其維護(hù)成 SoT 所需的過程。 數(shù)據(jù)處理的基本原則與試圖隱藏?cái)?shù)據(jù)并向服務(wù)外部公開狹窄接口的服務(wù)不同,倉庫中的離線數(shù)據(jù)更多的是公開來自相關(guān)服務(wù)和領(lǐng)域的數(shù)據(jù),以便一起進(jìn)行分析。我們的一個(gè)關(guān)鍵認(rèn)識(shí)是,為了做好這一點(diǎn),我們不僅要解決數(shù)據(jù)工具的問題,還要解決數(shù)據(jù)的人員和流程方面的問題。因此我們提出了一些指導(dǎo)原則:
已經(jīng)解決的問題在本文的余下部分,我們將重點(diǎn)介紹我們編程體驗(yàn)中一些最有用也最有趣的收獲。 數(shù)據(jù)質(zhì)量和等級(jí)由于數(shù)據(jù)質(zhì)量差,我們經(jīng)受了許多艱苦的工作。我們看到過這樣的例子:實(shí)驗(yàn)測(cè)量值不準(zhǔn)確,導(dǎo)致了大量的體力勞動(dòng),降低了驗(yàn)證和修正數(shù)據(jù)的效率。事實(shí)證明,隨著大數(shù)據(jù)的應(yīng)用,這個(gè)問題變得越來越普遍——據(jù) IBM的一份研究 和哈佛商業(yè)評(píng)論(HBR)估計(jì),由數(shù)據(jù)驅(qū)動(dòng)的企業(yè)將因數(shù)據(jù)不足而遭受巨大的負(fù)面影響。 為了減少繁重的工作和不良的業(yè)務(wù)影響,我們希望開發(fā)一種用于討論數(shù)據(jù)質(zhì)量的通用語言和框架,以便任何人都可以以一致的預(yù)期來生產(chǎn)和消費(fèi)數(shù)據(jù)。為了實(shí)現(xiàn)這一點(diǎn),我們發(fā)展了兩個(gè)主要概念:標(biāo)準(zhǔn)數(shù)據(jù)質(zhì)量檢查和數(shù)據(jù)集等級(jí)定義。 數(shù)據(jù)質(zhì)量數(shù)據(jù)質(zhì)量是一個(gè)復(fù)雜的話題,有許多不同的方面值得深入研究,因此我們將把數(shù)據(jù)質(zhì)量的討論局限于我們已經(jīng)取得重大進(jìn)展的領(lǐng)域,而將其它方面留待以后討論。Uber 生成和使用數(shù)據(jù)的環(huán)境對(duì)我們選擇關(guān)注哪些數(shù)據(jù)質(zhì)量領(lǐng)域起著重要的作用。雖然其中有些也能適用于其他人,但有些不是。在 Uber,數(shù)據(jù)生產(chǎn)者和消費(fèi)者面臨的一系列常見問題是:如何在分析最新數(shù)據(jù)和完整數(shù)據(jù)之間進(jìn)行權(quán)衡?如果在不同的數(shù)據(jù)中心并行運(yùn)行管道,我們?nèi)绾谓忉尣煌瑪?shù)據(jù)中心的數(shù)據(jù)一致性?在給定的數(shù)據(jù)集上應(yīng)該運(yùn)行什么語義質(zhì)量檢查?我們想要選擇一組檢查,為解釋這些問題提供一個(gè)框架。 數(shù)據(jù)質(zhì)量檢查經(jīng)過幾次迭代,我們得到了下面描述的 5 種主要類型的數(shù)據(jù)質(zhì)量檢查。每個(gè)數(shù)據(jù)集都必須附帶這些檢查并配置默認(rèn)的 SLA:
數(shù)據(jù)集所有者可以選擇提供不同的 SLA,并向消費(fèi)者提供適當(dāng)?shù)奈臋n和解釋——例如,根據(jù)數(shù)據(jù)集的性質(zhì),人們可能想要犧牲完整性來換取新鮮度(比如流式數(shù)據(jù)集)。相似地,消費(fèi)者可以選擇基于這些指標(biāo)來消費(fèi)數(shù)據(jù)集——基于完整性觸發(fā)器而不是簡單地基于時(shí)間觸發(fā)器來運(yùn)行管道。 我們正繼續(xù)研究更復(fù)雜的檢查,包括跨數(shù)據(jù)集概念的一致性,以及在上述時(shí)間維度檢查的基礎(chǔ)上進(jìn)行異常檢測(cè)。 數(shù)據(jù)等級(jí)除了質(zhì)量度量之外,擁有一種將數(shù)據(jù)集與業(yè)務(wù)不同等級(jí)的重要性關(guān)聯(lián)起來的方法也是必要的,這樣就很容易突出顯示最重要的數(shù)據(jù)。對(duì)于服務(wù),我們就是通過分配“等級(jí)”(基于數(shù)據(jù)的業(yè)務(wù)重要性)實(shí)現(xiàn)這一點(diǎn)的。這些等級(jí)有助于確定停機(jī)的影響,并提供了關(guān)于哪些數(shù)據(jù)等級(jí)應(yīng)用于哪些目的的指導(dǎo)原則。例如,如果某些數(shù)據(jù)影響合規(guī)性、收入或品牌,那么它應(yīng)該被標(biāo)記為第 1 級(jí)或第 2 級(jí)。由用戶創(chuàng)建的用于不太重要的臨時(shí)搜索的臨時(shí)數(shù)據(jù),默認(rèn)標(biāo)記為第 5 級(jí),如果不使用則可以在一段固定時(shí)間后刪除。數(shù)據(jù)等級(jí)還確定提交的事件的級(jí)別,以及針對(duì)數(shù)據(jù)集創(chuàng)建的修復(fù) bug 的 SLA。分級(jí)的一個(gè)副產(chǎn)品是數(shù)據(jù)資產(chǎn)的系統(tǒng)性清單,我們依賴這些資產(chǎn)來做業(yè)務(wù)關(guān)鍵決策。這樣做的另一個(gè)好處是,對(duì)相似或不再作為事實(shí)來源的數(shù)據(jù)集進(jìn)行顯式去重。最后,通過分級(jí)實(shí)現(xiàn)的可見性有助于我們重構(gòu)數(shù)據(jù)集,從而可以改進(jìn)建模、數(shù)據(jù)粒度一致性和規(guī)范化級(jí)別。 我們已經(jīng)開發(fā)了自動(dòng)化方法來為機(jī)構(gòu)生成“分級(jí)報(bào)告”,顯示需要分級(jí)的數(shù)據(jù)集、分級(jí)數(shù)據(jù)的使用情況等,作為機(jī)構(gòu)的“數(shù)據(jù)健康”的衡量指標(biāo)。我們還跟蹤這些指標(biāo)作為“工程卓越性”標(biāo)準(zhǔn)。隨著越來越多的采用和反饋,我們不斷迭代具體的定義和度量方法,進(jìn)一步改進(jìn)它們。 數(shù)據(jù)質(zhì)量工具如果我們不將這些定義自動(dòng)化并使其易于使用和應(yīng)用,僅僅擁有這些定義是不夠的。我們將多個(gè)現(xiàn)有的數(shù)據(jù)質(zhì)量工具整合到一個(gè)實(shí)現(xiàn)了這些定義的工具中。如果有意義,我們可以自動(dòng)生成測(cè)試(對(duì)于原始數(shù)據(jù),即由 Kafka 主題轉(zhuǎn)儲(chǔ)到數(shù)據(jù)倉庫的數(shù)據(jù),除了語義測(cè)試之外,我們還可以自動(dòng)生成四類測(cè)試),并且通過最小化數(shù)據(jù)集所有者的輸入簡化了測(cè)試創(chuàng)建過程。這些標(biāo)準(zhǔn)檢查為每個(gè)數(shù)據(jù)集提供了一個(gè)最小測(cè)試集,同時(shí),該工具也為生產(chǎn)者提供了足夠的靈活性,他們只需提供一個(gè) SQL 查詢就可以創(chuàng)建新的測(cè)試。我們學(xué)到了許多有趣的經(jīng)驗(yàn),包括如何以較低的開銷擴(kuò)展這些測(cè)試,如何簡化為數(shù)據(jù)集構(gòu)建一套測(cè)試的抽象,何時(shí)調(diào)度測(cè)試以減少誤報(bào)和噪音警報(bào),如何將這些測(cè)試應(yīng)用于流式數(shù)據(jù)集,以及我們希望在以后的文章中發(fā)布的更多內(nèi)容。 Databook 和元數(shù)據(jù)如前所述,我們有成千上萬的數(shù)據(jù)集和成千上萬的用戶。如果我們考慮其它數(shù)據(jù)資產(chǎn)——報(bào)表、機(jī)器學(xué)習(xí)特征、度量、儀表盤——我們管理的資產(chǎn)數(shù)量會(huì)大得多。我們希望確保:a) 消費(fèi)者使用正確的數(shù)據(jù)做出決策,b) 生產(chǎn)者做出明智的決策以改進(jìn)數(shù)據(jù)、確定錯(cuò)誤修復(fù)的優(yōu)先級(jí)等。為此,我們需要一個(gè)單一的目錄,該目錄收集所有數(shù)據(jù)資產(chǎn)的元數(shù)據(jù),并根據(jù)用戶的需求向他們提供正確的信息。事實(shí)上,我們意識(shí)到,糟糕的發(fā)現(xiàn)曾導(dǎo)致生產(chǎn)者和消費(fèi)者產(chǎn)生重復(fù)、冗余數(shù)據(jù)集的惡性循環(huán),然后這些數(shù)據(jù)集就被廢棄了。 我們希望向用戶提供關(guān)于每個(gè)數(shù)據(jù)工件(表、列、度量)的詳細(xì)元數(shù)據(jù):
創(chuàng)建這個(gè)單一的元數(shù)據(jù)目錄并提供一個(gè)功能強(qiáng)大的用戶界面(具有基于上下文的搜索和發(fā)現(xiàn)功能),對(duì)于實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者之間的協(xié)作、減少使用數(shù)據(jù)的工作量以及提升總體數(shù)據(jù)質(zhì)量至關(guān)重要。 為了實(shí)現(xiàn)這個(gè)目標(biāo),我們對(duì)內(nèi)部元數(shù)據(jù)目錄 Databook 的后端和 UI 進(jìn)行了徹底的改進(jìn)。我們對(duì)元數(shù)據(jù)詞匯表進(jìn)行了標(biāo)準(zhǔn)化,使其易于向現(xiàn)有實(shí)體添加新的元數(shù)據(jù)屬性,設(shè)計(jì)了擴(kuò)展性,以便以最小的工作量輕松定義新的實(shí)體類型,并將我們的大多數(shù)關(guān)鍵工具集成到該系統(tǒng)中,并將它們的元數(shù)據(jù)發(fā)布到這個(gè)中心位置,把各種數(shù)據(jù)資產(chǎn)、工具和用戶連接起來。改進(jìn)后的用戶界面更清晰,并且用戶可以更方便地過濾和縮小所需數(shù)據(jù)的范圍。經(jīng)過這些改進(jìn)后,工具使用量急劇增加。我們?cè)谶@篇博客中詳細(xì)介紹了這些變化:Turning Metadata Into Insights with Databook。 應(yīng)用程序上下文日志為了了解和改進(jìn)產(chǎn)品,讓我們的應(yīng)用程序打印日志來獲取實(shí)際的用戶體驗(yàn)是至關(guān)重要的。我們希望測(cè)量用戶體驗(yàn),而不是推斷用戶體驗(yàn),但是每個(gè)團(tuán)隊(duì)都有一個(gè)自定義的日志打印方法,導(dǎo)致在如何測(cè)量用戶體驗(yàn)方面存在不一致。我們希望標(biāo)準(zhǔn)化整個(gè)應(yīng)用系統(tǒng)中各個(gè)團(tuán)隊(duì)的日志打印方式,甚至“平臺(tái)化”日志打印,這樣開發(fā)者就可以在開發(fā)所有產(chǎn)品功能時(shí)免于去考慮如何通過日志打印必需信息,例如:向用戶展示了什么、與用戶交互時(shí)應(yīng)用程序的狀態(tài)、交互類型和交互持續(xù)時(shí)間。 在深入研究了 Uber 用來構(gòu)建應(yīng)用程序的移動(dòng)框架之后,我們意識(shí)到,移動(dòng)應(yīng)用開發(fā)框架(之前是開源的)已經(jīng)內(nèi)置了一個(gè)天然的結(jié)構(gòu),當(dāng)用戶交互時(shí),可以提供有關(guān)應(yīng)用程序狀態(tài)的關(guān)鍵信息。自動(dòng)獲取 RIB 層次 將使我們了解應(yīng)用程序的狀態(tài),以及哪個(gè) RIB(大致可以將它們當(dāng)作組件)當(dāng)前是活躍的。應(yīng)用程序上的不同屏幕映射到不同的 RIB 層次。 基于這種直覺,我們開發(fā)了一個(gè)庫來捕獲當(dāng)前的 RIB 層次,將其序列化,并且自動(dòng)將其附加到應(yīng)用程序觸發(fā)的每個(gè)分析事件。在接收這些信息的后端網(wǎng)關(guān)中,我們實(shí)現(xiàn)了從 RIB 層次結(jié)構(gòu)到一組靈活的元數(shù)據(jù)(例如屏幕名稱、應(yīng)用程序中階段的名稱,等等)的輕量級(jí)映射。這些元數(shù)據(jù)可以獨(dú)立演化,生產(chǎn)者或消費(fèi)者都可以添加更多信息,而不必依賴移動(dòng)應(yīng)用程序的更改(由于構(gòu)建和發(fā)布周期長達(dá)數(shù)周,因此更改速度慢且成本高)。在后端,網(wǎng)關(guān)在寫入 Kafka 之前,除了序列化狀態(tài)之外,還會(huì)將這些額外的元數(shù)據(jù)附加到分析事件中。網(wǎng)關(guān)上的這個(gè)映射也可以通過 API 獲得,這樣倉庫作業(yè)就可以在映射演進(jìn)時(shí)回填數(shù)據(jù)。 除了上面的核心問題之外,我們還必須解決一些其它問題,這里我們將不再詳細(xì)介紹,例如:優(yōu)化序列化的 RIB 層次結(jié)構(gòu)來減少分析負(fù)載大小,使映射高效,通過自定義測(cè)試框架在應(yīng)用程序更改時(shí)保持映射正確,將 RIB 樹正確映射到狀態(tài),對(duì)屏幕和狀態(tài)名稱進(jìn)行標(biāo)準(zhǔn)化,等等。 雖然這個(gè)庫并沒有完全解決我們要解決的所有日志問題,但它確實(shí)為日志提供了一個(gè)結(jié)構(gòu),使許多分析變得更容易,如下所述。我們正在迭代這個(gè)庫來解決提出的其它問題。 騎手漏斗分析 使用上面的日志框架生成的數(shù)據(jù),我們能夠極大地簡化對(duì)騎手行為的漏斗分析。我們?cè)趲讉€(gè)小時(shí)內(nèi)就建立了一個(gè)儀表盤,這在過去可能需要幾個(gè)星期的時(shí)間。這些數(shù)據(jù)目前正在為許多實(shí)驗(yàn)監(jiān)控和其它儀表盤提供支持,讓我們可以了解用戶行為。 度量標(biāo)準(zhǔn)化當(dāng)我們啟動(dòng) Data180 時(shí),公司中有許多度量代碼庫。我們?cè)u(píng)估了這些解決方案的優(yōu)缺點(diǎn),并在一個(gè)名為 uMetric 的代碼庫上進(jìn)行了標(biāo)準(zhǔn)化。事實(shí)上,它不僅僅是一個(gè)代碼庫——它具有高級(jí)功能,例如讓用戶專注于 YAML 格式的定義,并通過為不同的查詢系統(tǒng)(例如 Hive/Presto/Spark)生成查詢、為度量生成流式處理和批處理管道、自動(dòng)創(chuàng)建數(shù)據(jù)質(zhì)量測(cè)試等省去了大量的工作。這個(gè)系統(tǒng)正在得到更廣泛的采用,我們也在投資進(jìn)一步加強(qiáng)它。我們正在自動(dòng)化重復(fù)和近似重復(fù)的度量檢測(cè),將此系統(tǒng)與 Databook 和其它數(shù)據(jù)消費(fèi)界面集成,這樣消費(fèi)者就可以直接消費(fèi)度量結(jié)果,而不是復(fù)制和運(yùn)行度量 SQL(調(diào)整 SQL 更容易出錯(cuò)及導(dǎo)致度量重復(fù)),改進(jìn)了自助服務(wù)的性質(zhì),并在事故發(fā)生之前檢測(cè)到錯(cuò)誤,等等。這種標(biāo)準(zhǔn)化幫助我們大大減少了消費(fèi)時(shí)的重復(fù)和混亂。這個(gè)系統(tǒng)在這個(gè)博客中有詳細(xì)的描述——The Journey Towards Metric Standardization。 其它工具和流程變更除了上面列出的更改之外,我們還實(shí)施了其它幾個(gè)工具和流程更改,以改進(jìn)我們的數(shù)據(jù)文化,簡要介紹如下: 共享數(shù)據(jù)模型: 為了避免重復(fù)定義相同概念的模式(這很常見),我們改進(jìn)了模式定義的工具,允許導(dǎo)入和共享現(xiàn)有類型和數(shù)據(jù)模型。我們正在構(gòu)建其它特性和流程,從而推動(dòng)共享數(shù)據(jù)模型的采用,減少重復(fù)和近似重復(fù)的數(shù)據(jù)模型的創(chuàng)建。 移動(dòng)分析強(qiáng)制代碼評(píng)審者和單元測(cè)試: 我們重新組織了移動(dòng)分析事件的模式,并允許生產(chǎn)者和消費(fèi)者將自己添加為強(qiáng)制評(píng)審者,以避免在沒有適當(dāng)評(píng)審和通知的情況下進(jìn)行更改。我們還構(gòu)建了一個(gè)移動(dòng)日志測(cè)試框架,以確保數(shù)據(jù)測(cè)試在構(gòu)建時(shí)運(yùn)行。 強(qiáng)制所有權(quán): 我們改進(jìn)了數(shù)據(jù)生成的底層數(shù)據(jù)工具和界面(模式定義、Kafka 主題創(chuàng)建、創(chuàng)建數(shù)據(jù)的管道、度量創(chuàng)建、儀表盤創(chuàng)建,等等),以便在無法自動(dòng)推斷所有者時(shí)強(qiáng)制提供所有權(quán)信息。所有權(quán)信息進(jìn)一步標(biāo)準(zhǔn)化為整個(gè)公司的單一服務(wù),跟蹤團(tuán)隊(duì)和組織,而不僅僅是單個(gè)創(chuàng)建者。這一修改可以避免新增無主數(shù)據(jù)。我們進(jìn)一步運(yùn)行啟發(fā)式算法,將所有者分配到“廢棄”的數(shù)據(jù)集,這些數(shù)據(jù)集沒有所有者或所有者已不在公司,這使我們有望達(dá)到 100% 的所有權(quán)覆蓋率。 跨工具集成: 我們集成了工具,這樣一旦在源工具上設(shè)置了文檔、所有權(quán)和其它關(guān)鍵元數(shù)據(jù),它就無縫地跨所有下游工具流動(dòng)。我們將管道工具與標(biāo)準(zhǔn)告警和監(jiān)控工具集成在一起,使服務(wù)和數(shù)據(jù)管道在生成和管理告警方面具有一致性。 后續(xù)工作我們從這樣一個(gè)假設(shè)開始:對(duì)數(shù)據(jù)進(jìn)行全面的思考——考慮跨人員和系統(tǒng)的端到端數(shù)據(jù)流——可以提高整體數(shù)據(jù)質(zhì)量。我們認(rèn)為,這一努力已經(jīng)顯示出支持這一假設(shè)的有力證據(jù)。然而,最初的工作僅僅是我們向更好的數(shù)據(jù)文化轉(zhuǎn)型之旅的開始。在這項(xiàng)工作取得成功的基礎(chǔ)上,我們將這個(gè)程序推廣到 Uber 不同的組織和應(yīng)用程序。項(xiàng)目團(tuán)隊(duì)專注于分級(jí)、構(gòu)建真實(shí)數(shù)據(jù)源、提高數(shù)據(jù)質(zhì)量和數(shù)據(jù) SLA,而平臺(tái)團(tuán)隊(duì)則繼續(xù)改進(jìn)上述以及更多的工具。雙方共同努力來改進(jìn)流程,在 Uber 建立一種強(qiáng)大的數(shù)據(jù)文化。舉例來說,下面是一些正在進(jìn)行中的工作:
我們希望在未來走向更好的數(shù)據(jù)文化的過程中分享更多的經(jīng)驗(yàn)教訓(xùn)。 作者介紹Krishna Puttaswamy 是 Uber 高級(jí)工程師。他在市場團(tuán)隊(duì)中處理各種數(shù)據(jù)和實(shí)驗(yàn)問題。這篇博客中描述的工作,是他在應(yīng)用數(shù)據(jù)改進(jìn) Uber 應(yīng)用程序和服務(wù)時(shí)所面臨的實(shí)際問題的解決方案。他目前領(lǐng)導(dǎo) DataNG 和一個(gè)重寫實(shí)驗(yàn)平臺(tái)的項(xiàng)目。他以前在 Airbnb 和 LinkedIn 處理過數(shù)據(jù) / 機(jī)器學(xué)習(xí)問題。 Suresh Srinivas 是一位主要致力于數(shù)據(jù)平臺(tái)的架構(gòu)師,專注于讓用戶成功地從 Uber 的數(shù)據(jù)中實(shí)現(xiàn)價(jià)值。這篇博客中描述的工作,是這一努力的一部分。在 Uber 之前,他聯(lián)合創(chuàng)建了 Hortonworks,這是一家圍繞 Apache 開源項(xiàng)目建立的公司,旨在將 Hadoop 生態(tài)系統(tǒng)引入企業(yè)。Suresh 是 Apache Hadoop 和相關(guān)項(xiàng)目的長期貢獻(xiàn)者,也是 Hadoop PMC 成員之一。
來源:AI前線 |
|