RDDs基本操作之Transformations

Posted twodoge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

以上是关于RDDs基本操作之Transformations的主要内容,如果未能解决你的问题,请参考以下文章

转-Spark编程指南

RDDs基本操作RDDs特性KeyValue对RDDs

RDDs之combineByKey()

matplotlib 高阶之Transformations Tutorial

Python-OpenCV——Morphological Transformations(形态学转换)

Learning Spark中文版--第三章--RDD编程