通過func函式聚集rdd 中的所有元素,先聚合分區內資料,再聚合分區間資料。
scala> val rdd1 = sc.parallelize(1 to 100)
scala> rdd1.reduce(_ + _)
res0: int = 5050
scala> val rdd2 = sc.parallelize(array(("a", 1), ("b", 2), ("c", 3)))
scala> rdd2.reduce((x, y) => (x._1 + y._1, x._2 + y._2))
res2: (string, int) = (abc,6)
以陣列
的形式返回 rdd 中的所有元素.
所有的資料都會被拉到 driver 端,
所以要慎用
返回 rdd 中元素的個數.
返回 rdd 中前 n 個元素
組成的陣列
.
take 的資料也會拉到 driver 端
, 應該只對小資料集使用
返回 rdd 中的第乙個元素. 類似於take(1).
返回排序後的前 n 個元素
,預設是公升序排列.
資料也會拉到 driver 端
scala> val rdd1 = sc.makerdd(array(100, 20, 130, 500, 60))
scala> rdd1.takeordered(2)
res6: array[int] = array(20, 60)
scala> rdd1.takeordered(2)(ordering.int.reverse)
res7: array[int] = array(500, 130)
def aggregate[u: classtag](zerovalue: u)(seqop: (u, t) => u, combop: (u, u) => u): u
aggregate函式將每個分割槽
裡面的元素通過seqop和初始值
進行聚合
,然後用combine函式
將每個分割槽的結果
和初始值(zerovalue)
進行combine操作。
這個函式最終返回的型別不需要和rdd中元素型別一致
zerovalue
分區內聚合和分區間聚合的時候各會使用一次
scala> val rdd1 = sc.makerdd(array(100, 30, 10, 30, 1, 50, 1, 60, 1), 2)
rdd1: org.apache.spark.rdd.rdd[int] = parallelcollectionrdd[8] at makerdd at :24
scala> rdd1.aggregate(0)(_ + _, _ + _)
res12: int = 283
scala> val rdd1 = sc.makerdd(array("a", "b", "c", "d"), 2)
rdd1: org.apache.spark.rdd.rdd[string] = parallelcollectionrdd[9] at makerdd at :24
scala> rdd1.aggregate("-")(_ + _, _ + _)
res13: string = --ab-cd
摺疊
操作,aggregate的簡化
操作,seqop和combop一樣的時候,可以使用fold
scala> val rdd1 = sc.makerdd(array(100, 30, 10, 30, 1, 50, 1, 60, 1), 2)
scala> rdd1.fold(0)(_ + _)
scala> val rdd1 = sc.makerdd(array("a", "b", "c", "d"), 2)
scala> rdd1.fold("-")(_ + _)
res17: string = --ab-cd
作用:將資料集的元素以textfile的形式儲存到hdfs檔案系統或者其他支援的檔案系統,對於每個元素,spark 將會呼叫tostring方法,將它裝換為檔案中的文字
作用:將資料集中的元素以 hadoop sequencefile 的格式儲存到指定的目錄下,可以使 hdfs 或者其他 hadoop 支援的檔案系統。
作用:用於將 rdd 中的元素序列化成物件,儲存到檔案中。
作用:針對(k,v)型別的 rdd,返回乙個(k,int)的map,表示每乙個key對應的元素個數。
應用: 可以用來檢視資料是否傾斜
scala> val rdd1 = sc.parallelize(array(("a", 10), ("a", 20), ("b", 100), ("c", 200)))
scala> rdd1.countbykey()
res19: scala.collection.map[string,long] = map(b -> 1, a -> 2, c -> 1)
作用:針對 rdd 中的每個元素都執行一次func
每個函式是在executor 上執行的
,不是在 driver 端執行的.
行動,行動,再行動
生活中總有一種人,抱有這樣或那樣想法,整日做著白日夢,夢想成功有一日會像餡餅一樣砸到自己的頭上。非但如此,他們還會不時地制定各種各樣的目標?今天下定決心一定要努力去實現自己的目標,可是第二天早上起來,一切照舊。他們總是在幻想,卻從不見行動。這就是平凡的人 晚上想出千條路,早上起來走原路。因此,他們注...
行動的力量
做一件事情,只要開始行動,就算獲得了一半的成功。演講大師齊格勒提醒我們,世界上牽引力最大的火車頭停在鐵軌上,為了防滑,只需在它8個驅動輪前面塞一塊一英吋見方的木塊,這個龐然大物就無法動彈。然而,一旦這只巨型火車頭開始啟動,這小小的木塊就再也擋不住它了 當它的時速達到100英里時,一堵5英呎厚的鋼筋混...
2011強國行動
宗旨 挖掘可用時間,強化專業技能,定力,執行力,精力和意識,為個人發展新計畫奠定堅實基礎。目標 1.專業技能 2.定力 想靜則靜,想活躍則活躍,做事堅定不輕易轉移目標 3.精力 身體鍛鍊和精神力強化,讓自己有更旺盛精力進行個人發展 4.意識 案例分析。多思考,多總結,多分析和借鑑別人經驗 通過網路 ...