Spark學習筆記(1) 基本函式

2021-07-23 19:38:58 字數 3806 閱讀 6185

spark學習筆記(1)--------基本函式

前言:spark之精髓遠未領略,基本的函式和指令只能說是初體驗。希望日後可以將這個工具熟練掌握。。。

語言:scala

#內容

scala> rdd.foreach(println)

#字串內容(自己瞎輸的幾個字串)

leige;ddf;dfe;efefe;sdcd;

dfe;eff;

fsdfe;fe;frgr;dcdc;

eff;leige;dfe;

efefe;dcdc;

@命令和執行結果

input:val rddlength=rdd.map(s=>s.length).collect

output:rddlength: array[int] = array(25, 19, 8, 14, 11, 0)

功能:將rdd中字元統計出來,並放在array向量中

_.reduce()--

input:val rddtotallength=rddlength.reduce((a,b)=>a+b)

output:rddtotallength: int = 77

功能:將array中的數字壘加起來

_.map(_xx)

input:sc.parallelize(list(1,2,3,4,5,6))

output: maprdd = rdd.map(_*2)  //這是典型的函式式程式設計

input:maprdd.collect()

output:array(2,4,6,8,10,12)

_.map(x=>(x._2,x._1))

input:      將元組前後兩個元素調換

output: val l1=sc.parallelize(list(('a',1),('a',2),('b',3)))

input:       val l2=l1.map(x=>(x._2,x._1))

input:       l2.collect

output: array[(int, char)] = array((1,a), (2,a), (3,b))

_.filter(_xx)

input:      val filterrdd = maprdd.filter(_ > 5)

input:      filterrdd.collect()

output: array(6,8,10,12)

_.count

功能:計算行數

_.cache

功能:把內容儲存到記憶體中(如果在儲存到記憶體後操作會快很多)

_.flatmap(_.split(";"))

功能:去掉';'

input:     val rdd2=rdd.flatmap(_.split(";"))

input:     rdd2.collect

output:  array[string] = array(leige, ddf, dfe, efefe, sdcd, fsdfe, fe, frgr,dc,dfe, eff, eff, leige, dfe, efefe, dcdc, "")

_.flatmap(_.split(";").map((_,1)))

功能:將每個元素變成乙個元組

input:     val rdd3=rdd.flatmap(_.split(";").map((_,1)))

output:  array[(string, int)] = array((leige,1), (ddf,1), (dfe,1), (efefe,1), (sdcd,1), (fsdfe,1), (fe,1), (frgr,1), (dcdc,1), (dfe,1), (eff,1), (eff        @@,1), (leige,1), (dfe,1), (efefe,1), (dcdc,1), ("",1))

_.flatmap(_.split(";").map((_,1))).reducebykey(_+_)

_.flatmap(_.split(";").map((_,1))).reducebykey((a,b)=>a+b)

功能:將元組統計求和

input:     array[(string, int)] = array((sdcd,1), (dcdc,2), (fsdfe,1), ("",1), (ddf,1), (leige,2), (efefe,2), (frgr,1), (fe,1), (eff,2), (dfe,3))

rdd1 join rdd2

功能:          把兩個list做笛卡爾積

input:       val rdd1 = sc.parallelize(list(('a',1),(『a』, 2), ('b', 3)))

input:       val rdd2 = sc.parallelize(list(('a',4),(『b』, 5)))

output:val result_union = rdd1 join rdd2 //結果是把兩個list做笛卡爾積,array(('a', (1,4), ('a', (2,4), ('b', (3, 5)))

rdd1 union rdd2

功能:         把兩個list合併

input:       val rdd1 = sc.parallelize(list(('a',1),(『a』, 2)))

input:       val rdd2 = sc.parallelize(list(('b',1),(『b』, 2)))

output:val result_union = rdd1 union rdd2 //結果是把兩個list合併成乙個,list(('a',1),(『a』, 2),('b',1),(『b』, 2))

_.lookup('x')

功能:        把x對應value提出來組成乙個seq

input:      val rdd=sc.parallelize(list(('a',1),('a',2),('b',1),('b',2)))

input:      rdd.lookup('a')

input:      rdd2.foreach(println)

output:1 2

_.sortbykey()/_.sortbykey(false)

功能:按照鍵值排序/降序

input:     val l=sc.parallelize(list(('a',2),('b',4),('a',3),('b',1)))

input:     val l2=l.sortbykey()

output:array[(char, int)] = array((a,2), (a,3), (b,4), (b,1)

spark學習筆記(1)

apache spark是一種新型的快速通用的集群計算引擎。spark是基於記憶體計算的大資料計算框架,提高了在大資料環境下資料處理的實時性,同時保證了高容錯性和高可伸縮性,允許使用者將spark部署在大量廉價的硬體之上。形成集群。分布式計算 記憶體計算 容錯多計算正規化 byte,char,sho...

spark學習筆記(1)初來乍到

spark適用於需要多次操作特定資料集的應用場合。需要反覆操作的次數越多,所需讀取的資料量越大,受益越大,資料量小但是計算密集度較大的場合,受益就相對較小。是spark的核心概念是,指的是乙個唯讀的,可分割槽的分布式資料集,這個資料集的全部或部分可以快取在記憶體中,在多次計算間重用。這個很容易理解,...

spark複習筆記 1

1 用sc.textfile 來實現檔案的載入 val rdd1 sc.testfile home centos test.txt 載入文字檔案,以換行符的方式切割文字檔案.array hello world1 產生第乙個彈性分布式資料集 2 元素拿來之後對集合中的每個元素進行切割,按照空格進行切割...