Spark (2) Transformations

整理一些 Transformations

1. map:

map 會將 RDD 的元素 mapping 你指定的 function。

將所有元素乘以 2 再逐一顯示出來。

val nums = sc.parallelize(1 to 10)
nums.map(_*2).foreach(x=> print(s"${x} "))

這邊要注意,收回來的順序通常是亂的。

8 10 6 2 12 16 14 18 20 4

2. flatMap:

flatMap 和 map 類似但 flatMap 的結果是一維的。

先來編輯一個 foo.txt。

1,2,3
4,5,6
7,8,9

讀取 foo.txt。

> val lines = sc.textFile("foo.txt")

用 map 處理:

> var mrdd = lines.map(_.split(","))
> mrdd.collect
res0: Array[Array[String]] = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9))

用 flatMap 處理:

> var frdd = lines.flatMap(_.split(","))
> frdd.collect
res1: Array[String] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

3. filter:

filter 會留下條件達成的元素。

> val rdd = sc.parallelize(1 to 10)
> val odd = rdd.filter(_%2 != 0) 

4. distinct

distinct 會剔除相同的元素。

> val rdd = sc.parallelize(List(1, 1, 2, 3))
> rdd.distinct.collect

5. takeSample:

takeSample 會對 RDD 進行抽樣,第一個參數用來表示是否能有重複的元素。

> val rdd = sc.parallelize(1 to 10)
> rdd.takeSample(false, 2)

留言

熱門文章