SlideShare a Scribd company logo
Spark Tutorial
Spark Programming
Instructor: 林林家銘
1
⼤大綱
簡介
功能特性
基本架構
SQL 與 DataFrames
核⼼心部分
機器學習
⼤大綱
簡介
功能特性
基本架構
SQL 與 DataFrames
核⼼心部分
機器學習
簡介
4
分散式運算框架
叢集
Worker Node
Worker Node
Worker Node
Worker Node
ExecutorTaskTask
ExecutorTaskTask
ExecutorTaskTask
Client
Cluster
Manager
Data
Data
Data
ExecutorTask
儲存層
HDFS
HBASE
Swift
S3
等等
簡介
2009 年年由 Matei Zaharia在加州⼤大學柏克萊分校AMPLab 開創
2010 年年透過 BSD 授權條款開源釋出
2013年年,該專案被捐贈給Apache軟體基⾦金金會
2014年年2⽉月,Spark成為Apache的頂級專案
2014年年11⽉月,Databricks團隊使⽤用Spark 重新整理理資料排序世界記錄
最新版本:Apache Spark 2.1.0
Github:https://github.com/apache/spark
5
⼤大綱
簡介
功能特性
基本架構
SQL 與 DataFrames
核⼼心部分
機器學習
功能特性
記憶體加速技術
⽀支持多語⾔言
• Java、Python、Scala、R
進階分析⼯工具
• SQL、機器學習、串串流資料、Graph Algorithms。
7
功能特性
記憶體加速技術
具體優勢
• 機器學習演算法在每次迭代中修正誤差
8
初始
設定
讀取
資料
預測
模型
修正
計算
誤差
誤差
功能特性
記憶體加速技術
具體優勢
• 機器學習演算法在每次迭代中修正誤差
• 將資料暫存於記憶體,減少磁碟讀取、網路路傳輸次數
9
初始
設定
讀取
資料
預測
模型
修正
計算
誤差
誤差
功能特性
記憶體加速技術:減少讀取磁碟、網路路傳輸次數

10
功能特性
記憶體加速技術:以邏輯回歸為例例(訓練階段)
11
邏輯回歸

使⽤用情境
在英雄聯聯盟(LoL)中,

使⽤用兩兩隊賺錢的差異異預測勝率
12
在英雄聯聯盟(LoL)中,

使⽤用兩兩隊賺錢的差異異預測勝率
歷史資料
• Features
• ⼆二⼗十分鐘賺錢的差異異
• Label
• 輸或贏
13
gold_diff(1000) win
2 1
-2 0
3 1
-0.5 1
… …
歷史(訓練)資料
gold_diff:A隊錢總數 - B隊錢總數(20 min)
win:最後A隊贏為 1,反之則為 0
邏輯回歸

使⽤用情境
在英雄聯聯盟(LoL)中,

使⽤用兩兩隊賺錢的差異異預測勝率
14
橫軸:⾦金金錢差異異
縱軸:最終獲勝機率
邏輯回歸

使⽤用情境
功能特性
⽀支持多語⾔言與進階分析⼯工具
source: Apache Spark: 3 Promising Use-Cases
15
功能特性
DataFrame
• 資料表
• 類 SQL 語法
• 效能優化
16
測試:客⼾戶資料中,
計算各國家與各職稱的⼈人數
功能特性
機器學習功能(MLlib,ML Pipeline)
前處理理、特徵轉換、模型訓練與測試、預測
⽀支援模型:回歸、KNN、SVM、K-mean 等等
17
⼤大綱
簡介
功能特性
基本架構
SQL 與 DataFrames
核⼼心部分
機器學習
基本架構
分散式計算簡介
RDD:Resilient Distributed Dataset
DAG:Direct Acyclic Graph
執⾏行行模式
19
Cluster
基本架構
分散式計算簡介
Client
Worker Node
Worker Node
Worker Node
Worker Node
Cluster
Manager
Logistic

Regressioon Data
Data
Data
1. 計算邏輯回歸
2. 資料分散於叢集中
20
Cluster
基本架構
分散式計算簡介
Worker Node
Worker Node
Worker Node
Worker Node
Job Submit
Client
Cluster
Manager
Data
Data
Data
1. 向叢集管理理節點

提交⼯工作
Logistic

Regressioon
21
Cluster
基本架構
分散式計算簡介
Worker Node
Worker Node
Worker Node
Worker Node
Data
Data
Data
Executor
Executor
Executor
Client
Cluster
Manager
1. 叢集管理理節點安排

⼯工作節點
2. 暫存資料於記憶體
Scheduling
Logistic

Regressioon
22
Cache
Data
Cache
Data
Cache
Data
Cluster
基本架構
分散式計算簡介
Worker Node
Worker Node
Worker Node
Worker Node
Data
Data
Data
ExecutorTaskTask
ExecutorTaskTask
ExecutorTaskTask
Client
Cluster
Manager
1. ⼯工作節點執⾏行行指定

任務
2. 此階段可能發⽣生節

點間的資料交換
Scheduling
Logistic

Regressioon
23
Cache
Data
Cache
Data
Cache
Data
Cluster
基本架構
分散式計算簡介
Worker Node
Worker Node
Worker Node
Worker Node
ExecutorTaskTask
ExecutorTaskTask
ExecutorTaskTask
Client
Cluster
Manager
Data
Data
Data
ExecutorTask
Reduce
1. 結合各⼯工作節點的

計算結果
Logistic

Regressioon
24
Cache
Data
Cache
Data
Cache
Data
Cluster
基本架構
分散式計算簡介
Worker Node
Worker Node
Worker Node
Worker Node
ExecutorTaskTask
ExecutorTaskTask
ExecutorTaskTask
Client
Cluster
Manager
Data
Data
Data
ExecutorTask
1. 將最終計算結果回

傳給使⽤用者
2. 根據需求,判斷是

否進⾏行行下次迭代
Logistic

Regressioon
25
Cache
Data
Cache
Data
Cache
Data
基本架構
RDD 物件:Resilient Distributed Dataset
26
⽤用⼾戶端
RDD 物件
1. Create
2. Tranformation
3. Action
4. Cache
Work Node
Cache
Data
Work Node
Cache
Data
Work Node
Cache
Data Data
Data
Data
基本架構
RDD 物件:Resilient Distributed Dataset
操作⽅方法:
1. 初始化(Create):可由外部資料(HDFS)或⽤用⼾戶端載入

27
基本架構
RDD 物件:Resilient Distributed Dataset
操作⽅方法:
1. 初始化(Create):可由外部資料(HDFS)或⽤用⼾戶端載入
2. 轉換(Transformation): 計算後產⽣生新的 RDD

28
基本架構
RDD 物件:Resilient Distributed Dataset
操作⽅方法:
1. 初始化(Create):可由外部資料(HDFS)或⽤用⼾戶端載入
2. 轉換(Transformation): 計算後產⽣生新的 RDD
3. 任務執⾏行行(Action):執⾏行行所有計算並回傳結果
29
基本架構
RDD 物件:Resilient Distributed Dataset
操作⽅方法:
1. 初始化(Create):可由外部資料(HDFS)或⽤用⼾戶端載入
2. 轉換(Transformation): 計算後產⽣生新的 RDD
3. 任務執⾏行行(Action):執⾏行行所有計算並回傳結果
4. 暫存(Cache):暫存 RDD 對應的資料,可設定暫存層級
30
必須使⽤用 Action ⽅方法才會真正執⾏行行 Cache
基本架構
RDD 物件:Resilient Distributed Dataset
特性:
延遲執⾏行行

優化執⾏行行路路徑
Immutable

只能查詢或修改
31
Lazy
Evaluation
基本架構
DAG:Direct Acyclic Graph
32
Input RDD
RDD 1 RDD 2
Combined
RDD
Filter Filter
Union
基本架構
DAG:Direct Acyclic Graph
33
Input RDD
RDD 1 RDD 2
Combined
RDD
Filter Filter
Union
Count 延遲執⾏行行(Lazy Evaluation)
基本架構
執⾏行行模式(叢集)
• Stand Alone
34
基本架構
執⾏行行模式(叢集)
• YARN-Client
35
基本架構
執⾏行行模式
可搭配圖形化介⾯面,如:Apache Zeppelin
36
Spark
Client
Spark
Worker
Spark
Worker
Spark
Worker
Resource
Manager
Apache
zeppelin
⼤大綱
簡介
功能特性
基本架構
SQL 與 DataFrames
核⼼心部分
機器學習
SQL 與 DataFrames
查詢⽅方法
• select、orderBy、join、groupBy
聚合⽅方法
• count、max、min、mean …
38
資料下載
北風資料庫(Northwind Database)
• 客⼾戶資料、訂單資料、員⼯工資料等等
下載指令
訊息檢查
39
資料讀取
使⽤用 Dataframe
• 指定資料位置(CSV 檔案)
• “spark.read.csv(path, *options)” API
• 參參考程式
註冊為 SQL 資料表
• 參參考程式
使⽤用 Zeppelin 資料視覺化
• 參參考程式
40
資料讀取
客⼾戶資料(customers.csv -> customers_df)
訂單資料(orders.csv -> orders_df)
訂單詳細資料(order_details.csv -> order_details_df)
產品資料(products.csv -> products_df)
員⼯工資料(employees.csv -> employees_df)
參參考程式
41
查詢特定欄欄位
顯⽰示客⼾戶公司名稱及國家
• 指定欄欄位名稱(使⽤用字串串陣列列)
• dataframe.select(list)
• 參參考程式
查詢欄欄位名稱及定義
• dataframe.printSchema()
• 參參考程式
42
查詢特定欄欄位
函數 dataframe.select(…)
• 輸入:指定欄欄位
• 輸出:DataFrame 物件
• 可連續使⽤用
• dataframe.select(*cols1).select(*cols2)
43
條件式查詢
查詢來來⾃自於美國的客⼾戶
• 欄欄位名稱:country
• 欄欄位值:USA
• 程式語法:

dataframe.filter(col(‘country’) == ‘USA’)
• 參參考程式
44
條件式查詢
邏輯控制
• and:&
• or:|
• 等於:==
• 不等於:!=
例例⼦子:
1. (條件1 | 條件2):參參考程式
2. (條件1 | 條件2) & 條件3

((col1 == value1) | (col2 == value2)) & (col3 == value3)
45
條件式查詢
練習
• 查詢來來⾃自於美國或加拿⼤大客⼾戶的傳真號碼
• 提⽰示:
• 請勿回傳無意義的號碼
• 只需知道傳真號碼
• 參參考程式
46
排序
查詢結果按照指定欄欄位排序
47
• ASC:升冪
• DESC:降冪
• Country 欄欄位使⽤用 ASC排序
排序
查詢結果按照指定欄欄位排序
48
• ASC:升冪
• DESC:降冪
• Country 欄欄位使⽤用 ASC排序
• City 欄欄位使⽤用 DESC 排序
排序
指令
• dataframe.orderBy(*col)
練習
• 顯⽰示客⼾戶名單中的 companyName 與 contactName

並⽤用 companyName 升冪排序、contactName 降冪排序
• 參參考程式
49
Join查詢
根據共同資訊,合併資料表
例例如:顯⽰示訂單的公司名稱
50
orders
Join查詢
根據共同資訊,合併資料表
例例如:顯⽰示訂單的公司名稱
51
orders customers
Join查詢
根據共同資訊,合併資料表
例例如:顯⽰示訂單的公司名稱
使⽤用 df1.join(df2, on, how)
• df1 與 df2 皆為資料表(DataFrame)
• on:例例如利利⽤用 customerID 做連結
• how:例例如使⽤用 Inner Join ⽅方法
• 回傳合併後資料表(DataFrame)
52
Join查詢
例例如:顯⽰示訂單的公司名稱
使⽤用⽅方法 Inner Join
• 只顯⽰示兩兩張資料表交集部分
• 在這個例例⼦子中,不包含沒有公司資訊的訂單
• 參參考程式
53
Join查詢
Inner Join
Left Join
Right Join
54
Join查詢
Left Join
顯⽰示客⼾戶的訂單(有可能沒有訂單)
• employees_df.join(orders_df, on, ‘left’)
• 參參考程式
55
Join查詢
Right Join
顯⽰示銷售員業績(有可能無業績)
• orders_df.join(customers_df, on, ‘right’)
• 參參考程式
56
Group By 查詢
將資料表依照指定欄欄位進⾏行行分組
例例如:顯⽰示各國的客⼾戶數量量
• dataframe.groupBy(*cols)
• customers_df.groupBy(‘country’).count()
• 參參考程式
練習:

顯⽰示各國(country)

不同客⼾戶職稱(contectTitle)數量量
57
各種統計值
數量量筆數:count
最⼤大值:max
最⼩小值:min
平均值:avg
標準差:stddev
峰值與偏態:kurtosis、skewness
58
各種統計值
顯⽰示前 20 的訂單總額度
1. Join 資料表 order_details_df 與 products_df 取得:訂購數量量(quantity)、折扣
(discount)、產品原價(unitPrice)
2. 實際價格:unitPrice * (1-discount) = realPrice



3. 訂單中單⼀一產品總價:實際價格(realPrice) * 訂購數量量(quantity)
4. 使⽤用 groupBy(‘orderID’) 與 dataframe.agg(*expr) 與 orderBy
5. 參參考程式

59
Summary
功能特性
• 記憶體加速
• DataFrame
基本架構
• 分散式運算
• RDD
• DAG
SQL and DataFrame
• Select, orderBy, Join, groupBy, aggregation.
60

More Related Content

PDF
Azure Data Lake 簡介
PDF
Spark tutorial
PDF
Build 1 trillion warehouse based on carbon data
PDF
Hadoop con 2015 hadoop enables enterprise data lake
PPTX
Elastic stack day-1
PDF
運用MMLSpark 來加速Spark 上 機器學習專案
PDF
How to plan a hadoop cluster for testing and production environment
PPTX
Elasticsearch search engine_development_tips
Azure Data Lake 簡介
Spark tutorial
Build 1 trillion warehouse based on carbon data
Hadoop con 2015 hadoop enables enterprise data lake
Elastic stack day-1
運用MMLSpark 來加速Spark 上 機器學習專案
How to plan a hadoop cluster for testing and production environment
Elasticsearch search engine_development_tips

What's hot (20)

PDF
2016-07-12 Introduction to Big Data Platform Security
PDF
Spark sql培训
PDF
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
PDF
Log collection
 
PPTX
Hadoop hive
PDF
Azure HDInsight 介紹
PPT
Hadoop 與 SQL 的甜蜜連結
PPT
第4章 sql server数据库的管理
PDF
選擇正確的Solution 來建置現代化的雲端資料倉儲
PDF
Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming
PPT
Hadoop Map Reduce 程式設計
PDF
Oracle db 12c 加速企业转型之十大功能
PPTX
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
DOCX
数据仓库及Olap
PDF
Chapter 4 models
PPTX
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
PPTX
淘宝Hadoop数据分析实践
PDF
Oracle 索引介紹
PDF
Data Engineering in Taiwan: PAST, NOW and FUTURE
PDF
Distributed Data Analytics at Taobao
2016-07-12 Introduction to Big Data Platform Security
Spark sql培训
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Log collection
 
Hadoop hive
Azure HDInsight 介紹
Hadoop 與 SQL 的甜蜜連結
第4章 sql server数据库的管理
選擇正確的Solution 來建置現代化的雲端資料倉儲
Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming
Hadoop Map Reduce 程式設計
Oracle db 12c 加速企业转型之十大功能
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
数据仓库及Olap
Chapter 4 models
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
淘宝Hadoop数据分析实践
Oracle 索引介紹
Data Engineering in Taiwan: PAST, NOW and FUTURE
Distributed Data Analytics at Taobao
Ad

Similar to Spark tutorial (16)

PPTX
給初學者的Spark教學
PPTX
從統計到資料科學
PDF
python 實戰資料科學工作坊
PDF
Spark introduction - In Chinese
PDF
Spark 巨量資料處理基礎教學
PPTX
Hadoop 介紹 20141024
PDF
使用 Spark 計算 differential expression
PDF
COSCUP 2019 - 開源大數據引擎 Greenplum
PDF
Enterprise Data Lake in Action
PDF
Hadoop Big Data 成功案例分享
PDF
網頁爬蟲入門 Python web crawler at 淡江大學 20170930
PDF
Observe Changes of Taiwan Big Data Communities with Small Data (Updated)
PDF
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
PDF
線上埋碼資料收集實作
 
PPTX
Introduction to big data
PDF
Introduction of Spark by Wang Haihua
給初學者的Spark教學
從統計到資料科學
python 實戰資料科學工作坊
Spark introduction - In Chinese
Spark 巨量資料處理基礎教學
Hadoop 介紹 20141024
使用 Spark 計算 differential expression
COSCUP 2019 - 開源大數據引擎 Greenplum
Enterprise Data Lake in Action
Hadoop Big Data 成功案例分享
網頁爬蟲入門 Python web crawler at 淡江大學 20170930
Observe Changes of Taiwan Big Data Communities with Small Data (Updated)
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
線上埋碼資料收集實作
 
Introduction to big data
Introduction of Spark by Wang Haihua
Ad

Spark tutorial