1. 程式人生 > >Spark最簡單基礎

Spark最簡單基礎

Spark筆記

1. flatMapmap的區別

map函式會對每一條輸入進行指定的操作,然後每一條輸入返回一個物件;

flatMap函式則是兩個操作的集合,即先對映再扁平化

i.同map函式一樣,對每一條輸入進行指定的操作,然後為每一條輸入返回一個物件;

ii.然後將所有物件合併成一個物件。

2. 交集並集

 

3. 三種join

 

4. reduceByKey groupByKey 對比

 

reduceByKey在分發之前做一次運算、分發之後做一次運算。

groupByKey只在分發後做一次運算

也就是說groupByKey主要有有兩點缺點:額外的通訊成本;分發後的同

key記錄堆積可能導致記憶體溢位

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. taketopfirstcounttakeOrdered

 

不去重 寫錯了