1. 程式人生 > >RDDs基本操作之Transformations

RDDs基本操作之Transformations

逐元素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)