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 元素拿來之後對集合中的每個元素進行切割,按照空格進行切割...