Spark最簡單基礎
Spark筆記
1. flatMap和map的區別
map函式會對每一條輸入進行指定的操作,然後每一條輸入返回一個物件;
flatMap函式則是兩個操作的集合,即先對映再扁平化:
i.同map函式一樣,對每一條輸入進行指定的操作,然後為每一條輸入返回一個物件;
ii.然後將所有物件合併成一個物件。
2. 交集並集
3. 三種join
4. reduceByKey 和 groupByKey 對比
reduceByKey在分發之前做一次運算、分發之後做一次運算。
groupByKey只在分發後做一次運算
也就是說groupByKey主要有有兩點缺點:額外的通訊成本;分發後的同
那groupByKey 什麼必要存在?
reduceByKey groupByKey 就是兩個運算框架,我們寫業務程式碼的時候,需要的就是修改“運算”法則,框架規定了我們 reduceByKey 分發前後的運算是一樣的。
以上兩點缺點的前提是存在運算:只是收集同key的記錄 ;需要必須所有資料一起的運算(比如方差)。此時缺點不成立
#WordCount, 第二個效率低
sc.textFile("/root/words.txt").flatMap(line=>line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
sc.textFile("/root/words.txt").flatMap(x=>x.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect
sc.textFile("/root/words.txt").flatMap(x=>x.split(" ")).map((_,1)).groupByKey.map(t=>(t._1, t._2.sum)).collect
5. Cogroup
根據key求和
val rdd4 = rdd3.map(t=>(t._1,t._2._1.sum+t._2._2.sum))
6. 笛卡爾積
7. take,top,first,count,takeOrdered
不去重 寫錯了