1. 程式人生 > >Spark RDD 程式設計例項

Spark RDD 程式設計例項

Spark 最核心的概念就是RDD:彈性分散式資料集。RDD 是Spark 操作資料的一種抽象,本質是分散式資料集合。這種集合被分為多個分割槽,這些分割槽執行在叢集的不同節點上。我們在Spark的shell 上執行的命令,會在每個分割槽上執行,最後將執行結果彙總起來就得到我們需要的結果。
根據是否需要立即計算,我們把RDD操作分為兩種:轉換操作和行動操作。
轉換操作的RDD命令,並不會立即進行計算,而是在我們的操作鏈中遇到行動操作才一起進行計算。因此這種實現叫做惰性求值。所有的轉換操作都是惰性求值的。
行動操作是立即計算結果。並且也會將操作鏈上之前所有的轉換操作一起計算。

另外需要說明的是,RDD是不可以改表的,每一次操作,系統都會新建立一個RDD出來。

一般使用一個數據源來進行建立初始的RDD,資料來源有兩種,第一個是外部磁碟的檔案。第二種是程式中的物件。

磁碟檔案作為源頭:
val source = sc.textFile(“README.md”)

以程式中的物件作為源頭:
val source = sc.parallelize(List(“Hello”,”World”))

以下列舉幾個例項:

  • 計算RDD 中每個元素的平方

    這裡寫圖片描述

其中map()就是典型的轉換操作,map()主要是接收一個函式,把這個函式用於RDD中每一個元素。並將函式的計算結果作為結果RDD中對應的元素。

典型的轉換操作還有一個filter() ,filter()也是接收一個函式,並將RDD中滿足該函式的元素放入到新的RDD中。

  • 返回RDD中不等於1的元素
    這裡寫圖片描述