1. 程式人生 > >Scala in Spark 基本操作【未完】

Scala in Spark 基本操作【未完】

# 建立textFileRDD
val textFile = sc.textFile("README.md")
textFile.first()  #獲取textFile RDD的第一個元素
res3:String = # Apache Spark

# 篩選出包括Spark關鍵字的RDD然後進行行計數
val  linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark.count()
res10:Long = 19

# 找出RDD textFile中包含單詞數最多的行
textFile.map
(line=>line.split(" ").size).reduce((a,b)=>Math.max(a,b)) res12:Int = 14 #第14行是包含單詞最多的行 # 在scala shell中引入Java方法: import java.lang.Math textFile.map(line=>line.split(" ").size).reduce((a,b) => Math.max(a,b)) #將RDD linesWithSpark 快取,然後進行計數 linesWithSpark.cache() res13:linesWithSpark.type
= MapPartitionsRDD[8] at filter at <console>:23 linesWithSpark.count() res15:Long = 19

RDD:
makeRDD 和 parallelize是一樣的,不過makeRDD好像只能scala用,parallelize是Python和 R都能用的

# 通過單詞列表集合建立RDD thingsRDD
val thingsRDD = sc.parallelize(List("spoon","fork","plate","cup","bottle"))

# 計算RDD thingsRDD中單詞的個數
thingsRDD.count() res16:Long = 5

groupByKey( )轉換操作
這裡寫圖片描述

pairRDD.groupByKey()
#得到:
Banana [Yellow]
Apple  [Red, Green]
Kiwi   [Green]
FIgs   [Black]

collect 或 materialize linesWithSpark RDD中的資料

collect方法返回計算好的數值。??

linesWithSpark.collect()

快取RDD linesWithSpark

linesWithSpark.cache()

將linesWithSpark從記憶體中刪除

linesWithSpark,unpersist()

RDD的部分轉換操作:

轉換操作 作用
filter() 過濾
map() 將一個RDD中的每個資料項,通過map中的函式對映為一個新的元素,返回集合物件
flatMap() 先map,再將所有的輸出分割槽合併成一個。
distinct() 對RDD中的元素進行去重操作
coalesce() 將RDD進行重新分割槽,使用HashPartitioner
repartition() coalesce函式第二個引數為true的實現
sample()
union() 將2個RDD合併,不去重
intersection() 返回兩個RDD的交集,並且去重
subtract 類似intersection,返回在RDD中出現,並且不在otherRDD中出現的元素,不去重。
mapPartitions 與map類似,按分割槽進行對映
mapPartitionsWithIndex 同mapPartitions,多提供了2個引數
zip 用於將兩個RDD組合成Key/Value形式的RDD,這裡預設兩個RDD的partition數量以及元素數量都相同,否則會丟擲異常。
zipPartitions 將多個RDD按照partition組合成為新的RDD,該函式需要組合的RDD具有相同的分割槽數,但對於每個分割槽的元素數量沒有要求
partitionBy
mapValues
flatMapValues
combineByKey
foldByKey
groupByKey()
reduceByKey()
reduceByKeyLocally
randomSplit() 根據weights權重,將一個RDD切分成多個RDD
Action操作 說明
first
count
reduce
collect
take
top
takeOrdered
aggregate
fold
lookup
countByKey
foreach
foreachPartition
sortBy
saveAsTextFile
saveAsSequenceFile
saveAsObjectFile