SlideShare une entreprise Scribd logo
1  sur  57
Télécharger pour lire hors ligne
Spark Tutorial
Spark Programming
Instructor: 林林家銘
1
⼤大綱
功能特性
基本架構
SQL 與 DataFrames
核⼼心部分
機器學習
⼤大綱
功能特性
基本架構
SQL 與 DataFrames
核⼼心部分
機器學習
功能特性
記憶體加速技術
⽀支持多語⾔言
• Java、Python、Scala、R
進階分析⼯工具
• SQL、機器學習、串串流資料、Graph Algorithms。
4
功能特性
記憶體加速技術
具體優勢
• 機器學習演算法在每次迭代中修正誤差
5
初始
設定
讀取
資料
預測
模型
修正
計算
誤差
誤差
功能特性
記憶體加速技術
具體優勢
• 機器學習演算法在每次迭代中修正誤差
• 將資料暫存於記憶體,減少磁碟讀取、網路路傳輸次數
6
初始
設定
讀取
資料
預測
模型
修正
計算
誤差
誤差
功能特性
記憶體加速技術:減少讀取磁碟、網路路傳輸次數

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

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

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

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

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

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

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

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

提交⼯工作
Logistic

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

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

Regressioon
19
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
20
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
21
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
22
Cache
Data
Cache
Data
Cache
Data
基本架構
RDD 物件:Resilient Distributed Dataset
23
⽤用⼾戶端
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)或⽤用⼾戶端載入

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

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

優化執⾏行行路路徑
Immutable

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

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

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

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

顯⽰示各國(country)

不同客⼾戶職稱(contectTitle)數量量
54
各種統計值
數量量筆數:count
最⼤大值:max
最⼩小值:min
平均值:avg
標準差:stddev
峰值與偏態:kurtosis、skewness
55
各種統計值
顯⽰示前 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. 參參考程式

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

Contenu connexe

Tendances

Tendances (9)

诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
CH16:整合資料庫
CH16:整合資料庫CH16:整合資料庫
CH16:整合資料庫
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
 
Sql server 2014 新功能探索
Sql server 2014  新功能探索Sql server 2014  新功能探索
Sql server 2014 新功能探索
 
Spark性能调优分享
Spark性能调优分享Spark性能调优分享
Spark性能调优分享
 
Spark streaming经验介绍
Spark streaming经验介绍Spark streaming经验介绍
Spark streaming经验介绍
 
Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論
 
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJava SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
 
深入淺出Node.JS
深入淺出Node.JS深入淺出Node.JS
深入淺出Node.JS
 

Similaire à Spark tutorial

改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能
Rack Lin
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
Leyi (Kamus) Zhang
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
xwcoder
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
pan weizeng
 

Similaire à Spark tutorial (20)

开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统
 
改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能
 
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon data
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
Postgre sql intro 0
Postgre sql intro 0Postgre sql intro 0
Postgre sql intro 0
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
推荐系统:从入门到放弃
推荐系统:从入门到放弃推荐系统:从入门到放弃
推荐系统:从入门到放弃
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
Sql Alchemy Story
Sql Alchemy StorySql Alchemy Story
Sql Alchemy Story
 
高性能远程调用解决方案
高性能远程调用解决方案高性能远程调用解决方案
高性能远程调用解决方案
 

Spark tutorial