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)
留言
張貼留言