科技巨頭都愛的Data Pipeline,如何自動化你的數據工作?

文/閆述

對於做數據分析或者需要建模的人來說,面對龐雜的大數據,最棘手的難題往往就是多線程工作了。面對這種情況,你其實可以嘗試搭建一套Data Pipeline系統。Data Pipeline,中文譯為數據工作流,就是一套讓你的工作數據化、流程化、自動化的系統方法。在1月18日的數據俠線上實驗室中,DT君邀請到美國紐約數據科學學院大數據專家閆述,結合具體的案例,深入淺出地為我們介紹了Data Pipeline在機器學習中的典型應用。

什麼是Data Pipeline?

今天我主要跟大家聊聊Data Pipeline在數據工作中的實際應用。在我們的日常工作中,無論是機器學習的建模,還是數據產品開發,Data Pipeline實際上都是一個不可或缺的部分。特別是隨著數據來源更加多樣化、複雜化以及數據量的飛速增長,搭建一個高效的Data Pipeline,不僅能使你的工作事半功倍,更是很多複雜問題得以解決的關鍵所在。

我們先來看Data Pipeline的概念。從英文字面上看,Pipeline翻譯成中文,其實有兩層意思,它可以是管道、也可以是管道運輸的意思。

通俗點兒來講,Data Pipeline可以理解為是一個貫穿了整個數據產品或者數據系統的一個管道,而數據就是這個管道所承載的主要對象。Data Pipeline連接了不同的數據處理分析的各個環節,將整個龐雜的系統變得井然有序,便於管理和擴展。

從而讓使用者能夠集中精力從數據中獲取所需要的信息,而不是把精力花費在管理日常數據和管理資料庫方面。

(圖片說明:Data Pipeline溝通了數據源和數據應用的目標,包含了一家公司內部的數據流動全過程。)

在如今的實際數據工作中,我們需要處理的數據常常是多種多樣的。比如說設想這樣一個場景:如果我們需要對某一個產品進行一些分析,數據的來源可能是來自於社交媒體的用戶評論、點擊率,也有可能是從銷售渠道獲取的交易數據、或者歷史數據,或者是從商品網站所抓取的產品信息。

面對這麼多不同的數據來源,你所要處理的數據可能包含CSV文件、也可能會有JSON文件、Excel等各種形式,可能是圖片文字,也可能是存儲在資料庫的表格,還有可能是來自網站、APP的實時數據。

在這種場景下,我們就迫切需要設計一套Data Pipeline來幫助我們對不同類型的數據進行自動化整合、轉換和管理,並在這個基礎上幫我們延展出更多的功能,比如可以自動生成報表,自動去進行客戶行為預測,甚至做一些更複雜的分析等。

(圖片說明:從數據源到數據處理,再到實現數據目標的過程。)

對於Data Pipeline,很多人習慣於將它和傳統的ETL(Extract-Transform-Load,指的是將數據從來源端經過抽取、轉換、載入至目的端的過程)來對比。相對於傳統的ETL,Data

Pipeline的出現和廣泛使用,主要是應對目前複雜的數據來源和應用需求,是跟「大數據」的需求密不可分的。

在實際應用中,目前Data Pipeline在機器學習、任務分析、網路管理、產品研發方面都是被廣泛採用的。像是Facebook、Google或是國內的百度、騰訊這樣的數據驅動型的科技巨頭,它們的任何一個產品的開發,都有一支龐大的數據工程師隊伍在後台對整個產品的Data Pipeline進行設計開發和維護。

很多時候,我們甚至可以說,Data Pipeline的成敗是整個產品成敗的關鍵。

Data Pipeline在機器學習中的應用案例

Data Pipeline的應用有很多,我主要介紹一下其在機器學習中的應用。儘管在機器學習領域的應用只是Data Pipeline的一個小應用,但卻是非常成功的。

對於機器學習來說,Data Pipeline的主要任務就是讓機器對已有數據進行分析,從而能使機器對新的數據進行合理地判斷。

我想很多人都對Kaggle有所耳聞,可能也有一些人參與過Kaggle的項目。

Kaggle是一個數據分析的平台,企業或者研究者可以描述數據方面的問題,把對模型的期望發布到kaggle上面,以競賽的形式向廣大的數據科學愛好者徵集更有效的解決方案。

上面這張圖,是我從一位經常參與Kaggle項目的達人的博客中拿到的。在和很多Kaggle達人的接觸中,其實我們可以發現,他們大多數都會將Data Pipeline整合到自己的機器學習建模的流程中。

這張流程圖基本涵蓋了絕大多數機器學習要做的事情。如果你有一套合理的Data Pipeline來幫助你自動進行機器學習,那麼其實可以省去大量的瑣碎的環節,從而把精力集中在具體模型的分析上。

下面我們通過一個簡單的機器學習案例來看一下Data Pipeline是怎樣用於實際問題的。在這個案例中,我們用到的數據是來源於亞馬遜的產品分類信息,其中包含了產品介紹、用戶對產品的評分、評論,以及實時的數據。這個項目的主要目的是希望可以用這些實時獲取的數據構建模型,從而對新的產品進行打分。

在這個項目中,其實涉及了兩個Data Pipeline。第一個Data Pipeline是用於構建基本的模型。如下面這個流程圖。就是在機器學習過程中最基本的流程,包括了讀取數據、探索分析、模型選擇以及評估等。有了Data Pipeline,大大提升了運行效率。

這樣一個類似模塊化設計的Data Pipeline,其應用到的很多組件在之前的代碼中就已經設定好。如果我們在後續需要對Data Pipeline進行修改,只需要去修改最初的某個定義就可以。對於廣大碼農來說,這可以說是節省了很多重複性的工作,而且使得代碼更加簡潔,查錯也更加方便。

有了最基本的模型,下一步就是構建第二個Data Pipeline,使其服務於實時預測。因為目前,數據是每分每秒都在更新,為了追求預測的準確性和時效性,大多數的公司都會對數據進行實時或是准實時的分析,從而就有了Data Pipeline的需求。

在第二個Data Pipeline中,最重要的兩個環節就是上圖中的read query stream(讀取實時數據)、query the stream(實時計算數據)這兩個環節,它主要起到了實時去讀取數據、然後再對數據進行實時計算,給用戶一個實時的反饋的作用。這樣的話,數據就可以實現更大的價值。

第二個案例,則是一個更加具體的案例。很多朋友喜歡從Netflix上看美劇。作為一家成立於1997年,最初以出租DVD為主營業務,現在發展成為美國首屈一指的互聯網流媒體服務商,Netflix目前很大一部分業務其實都是基於數據處理和分析來完成的。

如果你通過APP或者是手機去使用Netflix服務,你很可能會遇到下面這樣的界面:

Netflix會根據你的瀏覽記錄來推斷你的喜好,從而給你進行個性化的推薦。憑藉著這種實時而準確的用戶數據來推薦影片,Netflix吸引著更多的用戶去成為它的訂閱者。而事實上,它這種以數據為核心的商業模式,和它的規模也有很大關係。根據最新的統計結果,Netflix的用戶遍及了全球190個國家,每個月用戶的總活躍時間達到了30億個小時。

(圖片說明:Netflix的用戶規模和數據規模等)

有了這麼豐富的數據,是非常適合使用Data Pipeline的。Data Pipeline在Netflix的推薦系統中起到的作用是將來自全球的用戶數據進行整合分類,導入不同的時間、不同類型的模型中,從而對用戶的行為進行一個實時的預測。

Netflix的Data Pipeline系統可以分成三個部分:實時計算、准實時計算、離線部分。

實時計算部分,主要是用於對實時事件的響應和與用戶的互動,它必須在極短的時間裡對用戶的請求作出響應,因此它比較適用於小量數據的簡單運算。而至於離線計算,它則不會受到這些因素的干擾,比較適用於大量數據的批處理運算。

准實時運算,則是介於實時和離線之間。它可以處理實時運算,但是又不要求很快給出結果。比如當用戶看過某部電影之後再給出推薦,就是准實時運算,可以用來對推薦系統進行更新,從而避免對用戶的重複推薦。

當然,Netflix要搭建Data Pipeline這樣的系統,也有一定的技術和硬體要求。

比如,在下圖中你可以看到左邊列出了很多硬體上的要求。很多是在雲端的服務,比如亞馬遜雲服務(AWS)。在在線的運算系統中,如果對速度的要求很快,可能會用到Cassandra、EVCache。

而對於離線的推薦和運算來說,我們需要的是對大數據的存儲,而不會太在乎它的速度快慢,所以這時候HIVE ON S3會是一個比較好的選擇。

搭建Data Pipeline的常見工具有哪些

搭建Data Pipeline是一個複雜的數據工程,它牽扯很多因素,比如軟硬體協調,資金方面的投入等。這裡我不再詳細說明。

下面,我想介紹一些常用的Data Pipeline相關工具。

首先是存儲方面,這個也是大家最容易接觸到的。首先,你需要知道你的數據從哪裡來,它的速度、它的數據量是多少。然後你要知道當你的數據經過數據處理之後,Data Pipeline需要把數據以什麼樣的格式、存儲在怎樣一個數據環境里。

根據數據格式和數據數量的不同,你需要根據你的目的選擇合適的數據存儲方式。如果你的數據量特別大,你很有可能需要使用像是Hive這樣的基於大數據的數據存儲工具。

其次,你需要考慮到你要對數據進行怎樣的處理。比如,如果你需要做批量處理、實時分析等,這些問題都可能需要你使用能處理大量數據的工具。像是Spark就是比較流行的的處理方案,因為它包含了很多介面,基本上可以處理Data

Pipeline中所需要面臨的絕大多數問題。

Data Pipeline相關的複雜工具有很多,你需要去認真選擇最適合的工具。

這裡我想分享一個搭建Data

Pipeline可能會用到的小管理工具。它是由Airbnb開發的一款叫做Airflow的小軟體。這個軟體是用Data

Pipeline來寫的,對於Python的腳本有良好的支持。它的主要作用是對數據工作的調度提供可靠的流程,而且它還自帶UI,方便使用者監督程序進程,進行實時的管理。

在Airflow這個軟體中,最重要的一個概念叫做DAG(有向無環圖)。關於DAG,前面提到的機器學習案例中其實已經有了應用。在Airflow中,你可以將DAG看成是一個小的流程,這個小流程是由一個個有向的子任務組成,按照事先規定好的順序來一次順序執行,最終達到Data

Pipeline所要實現的目的。

由於時間關係,這裡不再具體展開。簡而言之,我想說的是,在數據處理的過程中,Data Pipeline是一個很重要的系統,而在搭建這樣的系統中,可以適當通過一些軟體來管理,從而獲得最好的效果。

註:以上內容根據閆述在數據俠線上實驗室的演講實錄整理。本文僅為作者觀點,不代表DT財經立場。

編輯 | 胡世龍

題圖 | Mashable

期待更多數據俠乾貨分享、話題討論、福利發放?在公眾號DT數據俠(ID:DTdatahero)後台回復「數據社群」,可申請加入DT數據社群。

關於DT×NYCDSA

DT×NYCDSA 是DT財經與紐約數據科學學院合作專欄。紐約數據科學學院(NYC Data Science Academy)是由一批活躍在全球的數據科學、大數據專家和SupStat Inc. 的成員共同組建的教育集團。

數據俠門派

本文數據俠閆述,美國大數據培訓機構紐約數據科學學院(NYC Data Science Academy)大數據專家,南卡羅來納大學物理學博士。在編程、數據分析、統計模型、機器學習等方面擁有豐富經驗。

加入數據俠

「數據俠計劃」是由第一財經旗下DT財經發起的數據社群,包含數據俠專欄、數據俠實驗室系列活動和數據俠聯盟,旨在聚集大數據領域精英,共同挖掘數據價值。了解數據俠計劃詳情請回復「數據俠計劃」,投稿、合作請聯繫datahero@dtcj.com。

推薦閱讀:

框架為數據科學家帶來哪些編程語言所不能帶來的優勢
數據科學的新生代工具(附實操代碼)
安客誠成為阿里數據銀行首批認證服務商 助力數據營銷新生態
健身應用暴露了美軍秘密基位置
R語言實戰—04數據基本管理

TAG:數據處理 | 數據 | 科技 |