- Spark快速大數(shù)據(jù)分析(第2版)
- (美)朱爾斯·S. 達米吉 布魯克·韋尼希 丹尼·李 (印)泰瑟加塔·達斯
- 1455字
- 2021-12-06 11:51:06
1.4.1 哪些人用Spark,用它做什么
毫不意外,絕大多數(shù)和大數(shù)據(jù)打交道的開發(fā)人員要么是數(shù)據(jù)工程師,要么是數(shù)據(jù)科學家,要么是機器學習工程師。對這些人來說,Spark 的吸引力在于允許使用者通過自己熟悉的編程語言以一套引擎構(gòu)建各種應用。
當然,開發(fā)人員可以有多種身份,尤其是在創(chuàng)業(yè)公司或較小的工程組中,有時候一個人就要搞定數(shù)據(jù)科學和數(shù)據(jù)工程的活兒。不過,這些任務的核心都在于數(shù)據(jù),而且是海量的數(shù)據(jù)。
數(shù)據(jù)科學任務
作為大數(shù)據(jù)時代火起來的一門學科,數(shù)據(jù)科學要用數(shù)據(jù)來講故事。但在數(shù)據(jù)能講故事之前,數(shù)據(jù)科學家必須先清洗數(shù)據(jù)、探索數(shù)據(jù),以發(fā)現(xiàn)潛在的模式,然后構(gòu)建出模型,從而對結(jié)果進行預測或建議。其中一些任務需要具有統(tǒng)計學、數(shù)學、計算機科學和編程方面的知識背景。
大多數(shù)數(shù)據(jù)科學家能熟練運用 SQL 這樣的分析工具,擅長使用 NumPy 和 Pandas 這樣的庫,熟悉 R 和 Python 這些編程語言。但他們還需要了解如何處理或轉(zhuǎn)化數(shù)據(jù),以及如何使用現(xiàn)成的分類算法、回歸算法、聚類算法來構(gòu)建模型。這些任務經(jīng)常是迭代的、交互式的、臨時性的,又或是實驗性的(用于證明假想)。
好在 Spark 能支持這些不同類型的工具。Spark 的 MLlib 提供了一些常見的機器學習算法,以使用高層的評估器、轉(zhuǎn)化器、數(shù)據(jù)特征提取器來構(gòu)建模型流水線。Spark SQL 和 Spark shell 則有助于對數(shù)據(jù)進行臨時的交互式探索。
另外,Spark 讓數(shù)據(jù)科學家能夠處理大規(guī)模數(shù)據(jù)集,并讓其模型訓練和評估能夠擴展到更大的數(shù)據(jù)規(guī)模上。Spark 2.4 引入了全新的幫派調(diào)度器(gang scheduler,作為 Hydrogen 項目的一部分引入),以適應分布式場景中的深度學習模型訓練和調(diào)度的容錯需求。Spark 3.0 引入了在獨立集群、YARN、Kubernetes 集群環(huán)境下管理 GPU 資源的能力。這意味著開發(fā)人員可以將 Spark 用于需要深度學習技術(shù)的任務。
數(shù)據(jù)工程任務
構(gòu)建出模型之后,數(shù)據(jù)科學家常常需要與負責部署模型的其他團隊成員合作來完成模型上線。另一種情況是,數(shù)據(jù)科學家需要和其他人緊密合作,從而將原始的“臟”數(shù)據(jù)轉(zhuǎn)化為其他數(shù)據(jù)科學家比較容易處理或使用的“干凈”數(shù)據(jù),并搭建出相應的流程。比如,分類模型或者聚類模型無法獨立存在,需要和 Web 應用或 Apache Kafka 這樣的流式數(shù)據(jù)引擎協(xié)作,或者作為復雜的數(shù)據(jù)流水線的一個環(huán)節(jié)。這樣的數(shù)據(jù)流水線通常由數(shù)據(jù)工程師搭建。
數(shù)據(jù)工程師對軟件工程原理和方法學有著深刻的理解,具有為具體業(yè)務用例構(gòu)建可伸縮數(shù)據(jù)流水線的能力。數(shù)據(jù)流水線允許對來自各種數(shù)據(jù)源的原始數(shù)據(jù)進行轉(zhuǎn)化和清洗,將其存儲到云、NoSQL 數(shù)據(jù)庫,或者關系數(shù)據(jù)庫中,供下游開發(fā)人員拿來生成報表,或者允許數(shù)據(jù)分析師在商業(yè)智能工具中進行訪問,從而打通了端到端的轉(zhuǎn)化過程。
Spark 2.x 引入了革命性的流處理模型——連續(xù)流應用(第 8 章會詳細介紹)。有了結(jié)構(gòu)化流處理 API,數(shù)據(jù)工程師可以構(gòu)建同時從實時數(shù)據(jù)和靜態(tài)數(shù)據(jù)進行提取 - 轉(zhuǎn)化 - 加載(ETL)操作的復雜數(shù)據(jù)流水線。
數(shù)據(jù)工程師使用 Spark 的原因是,Spark 允許他們用很簡單的方式將計算并行化,而無須操心分布式計算和容錯這些復雜的問題。這讓數(shù)據(jù)工程師可以放心地將精力集中于使用高層的 DataFrame API 和領域?qū)S谜Z言(DSL)的查詢,從而進行 ETL,以便從多種數(shù)據(jù)源讀取和整合數(shù)據(jù)。
Spark 2.x 和 Spark 3.0 因 SQL 的 Catalyst 優(yōu)化器和用于生成緊湊代碼的 Tungsten 引擎帶來了性能提升,這大大簡化了數(shù)據(jù)工程師的工作。他們可以選擇 Spark 的 3 種 API(RDD、DataFrame、Dataset)中滿足手頭任務需求的任意一種,從而充分利用 Spark。
Spark 的常見使用場景
不論是數(shù)據(jù)工程師、數(shù)據(jù)科學家,還是機器學習工程師,都可以在下列使用場景中用上 Spark。
- 并行處理分布在集群中的大規(guī)模數(shù)據(jù)集。
- 執(zhí)行交互式查詢語句來探索數(shù)據(jù)集并進行數(shù)據(jù)集可視化。
- 使用 MLlib 構(gòu)建、訓練,以及評估機器學習模型。
- 使用各種數(shù)據(jù)流實現(xiàn)端到端的數(shù)據(jù)流水線。
- 分析圖數(shù)據(jù)和社交網(wǎng)絡。
- 數(shù)據(jù)庫基礎教程(SQL Server平臺)
- 虛擬化與云計算
- Effective Amazon Machine Learning
- 圖解機器學習算法
- 云計算與大數(shù)據(jù)應用
- 數(shù)據(jù)要素五論:信息、權(quán)屬、價值、安全、交易
- 數(shù)據(jù)庫應用基礎教程(Visual FoxPro 9.0)
- OracleDBA實戰(zhàn)攻略:運維管理、診斷優(yōu)化、高可用與最佳實踐
- MySQL 8.x從入門到精通(視頻教學版)
- Python金融數(shù)據(jù)分析(原書第2版)
- 大數(shù)據(jù)架構(gòu)商業(yè)之路:從業(yè)務需求到技術(shù)方案
- 數(shù)字IC設計入門(微課視頻版)
- 區(qū)域云計算和大數(shù)據(jù)產(chǎn)業(yè)發(fā)展:浙江樣板
- Unity 2018 By Example(Second Edition)
- Expert Python Programming(Third Edition)