Week 5, Big Data Analytics using Spark

 
 

Programing in Spark

 

Spark Core: Programming in Spark using RDD in pipelines

RDD 建立過後,會有兩種操作,Transformation 和 Action. 只有到了Action 階段才會驗證Transformation 操作是否正確,所以經常看到Action階段有很多報錯. 叫 lazy

下圖是一個具體的例子. 教程裡提到了cache功能,比如從資料庫query 資料放到RDD裡,這個過程比較耗時,為了防止每次都去執行query操作,我們就可以把第一次的結果()也就是RDD) cache起來,但是注意使用cache 很耗記憶體,可能會造成瓶頸..

Spark Core: Transformation

RDD本身不能被改變,只能通過transformtion操作轉成一個新的RDD

Map transformation

flatMap transfromation, 一對多

map 和 flatMap 是narrow tranformation. narrow transformation 只依賴於一個partition上的資料,並且 data suffering is not nessary.

Filter transformation

Coalesce transformation, 比如

  

上面談的都是narrow transformation, 都是本地處理資料不需要在網路上傳輸資料。

接下來談wide transformation

先看看reduceByKey 和 groupByKey 的區別.

groupByKey 需要跨節點的shuffle 操作,輸出是一個由 初始數字 1 組成的列表

reduceByKey 其實就是 groupByKey + reduce

narrow transformation 和 wide transformation 區別: 就看有沒有跨節點的 shuffle 操作, 也就是有沒有跨節點取資料做操作

Spark Core: Actions

第一個Action操作是很常見的collect, 它從worker node 收集最終的結果資料copy到driver node.

其中Reduce 最常用

Main models in Spark eco

Spark SQL

做什麼的?優勢?

Spark SQL 提供了API可以使query來的data轉成 DataFrame

具體怎麼做?

Spark SQL summary

Spark Streaming

Spark Streaming summary

Spark MLlib

Spark GraphX

Spark GraphX summary