大數據近幾年成為顯學,坊間許多書籍鼓吹各種大數據的商機,以及各種運用大數據的成功故事。不過,實際上探討大數據技術的書籍相對較少,不是技術程度太淺,就是太過個案,難以做為個人學習教材之用。在台美大數據工程師(非資料科學家)的職缺非常多,但相關工程訓練在學校沒教,即使進業界,若非曾經待過資料團隊也無法學到相關技術與經驗。因此筆者發願要將自己在數據工程領域的所學,匯集成冊,替後進多增加一個自學資料工程的管道。期許能拋磚引玉,促進學習交流。
坊間有很多大數據相關的書籍,不過往往把太多概念混在一起談。 本書對大數據工程的定義只有一個:能撰寫及分析高延展性 (highly scalable) 程式的軟體工程。 其他獨立的資料處理概念,諸如資料科學、資料視覺化、資料探勘、資料庫表單設計、資料彙集 (data ingestion) 等皆不屬於本書討論範圍。 事實上看到這些概念被隨意替換誤植,也是促使筆者開始寫這本書的動機之一; 因此開宗明義就要定義清楚大數據技術的範疇。
本書的章節會先專注在資料工程領域,以及此工程所需要的各種技術,從基本 (maven, eclipse) 到進階 (Hadoop API, deployment, performance tuning, etc.) 。 另外本書會用數種範例來介紹數據工程的眉眉角角,以及系統該如何規劃等等。
直到資料工程介紹完後,才會開始介紹處理大數據資料科學可用的演算法有哪些。
以大數據演算法如何設計為主體,去完成數種資料科學的任務。
傳統上的許多資料科學演算法都是
由於筆者目前工作是以 Hadoop MapReduce framework 為主, 因此本書範例也會集中在使用這套 API ,而非目前最流行的 Spark。 若有心人願意補足 Spark 的範例,歡迎加入共同寫作!