RDDs基本操作之Transformations
阿新 • • 發佈:2018-11-25
逐元素Transformation
map()
map()接收函式,把函式應用到RDD的每個元素,返回新的RDD
舉例:
val lines = sc.parallelize(Array("hello", "spark", "hello", "world")
val lines2 = lines.map(word => (word,1))
打印出來
lines2.foreach(println)
hello,1
spark,1
hello,1
world,1
filter()
filter接收函式,返回只包含滿足filter()函式的元素的新RDD
val lines3 = lines.filter(word=>word.contains("hello")) lines3.foreach(println) hello hello
flatMap()
對每個輸入元素,輸出多個輸出元素。
flat是壓扁的意思,將RDD中元素壓扁後返回一個新的RDD。
舉例:
spark.txt檔案中的內容
val inputs = sc.textFile("spark.txt")
val lines = inputs.flatMap(line => line.split(" "))
lines.foreach(print)
輸入如下:
hello!helloworldhellospark
集合運算
RDDs支援數字集合的計算,例如並集,交集計算。
舉例:
val rdd1 = sc.parallelize(Array("hello", "spark", "hello", "world") val rdd2= sc.parallelize(Array("hello", "spark", "hi")
運算
1、去重
val rdd_distinct=rdd1.distinct()
2、並集
val rdd_union = rdd1.union(rdd2)
3、交集
val rdd_inter = rdd1.intersection(rdd2)
4、特別的
val rdd_sub=rdd1.subtract(rdd2)