Spark Transformation 简介

说明

本片简单介绍一下 Spark Transformation 以及一些常用的 Transformation,由于刚开始接触,内容较少,后续持续完善。
参考资料:

  1. 慕课网视频: http://www.imooc.com/video/14397/0
  2. 知乎讨论(flatMap 与 Map)https://www.zhihu.com/question/34548588?sort=created

Transformation 简介

Transformation 属于 Spark RDD 的常用基本操作中的一类,可以理解为其他语言中的函数或方法,其作用是:基于一个RDD,根据一定的规则,构建一个新的RDD。

BASE_RDD_OBJ ===Transformation===> NEW_RDD_OBJ

Input ===Method===> Output

常用Transformation介绍

map

  • 名称: map
  • 作用:对RDD中的每个元素,运行指定规则进行计算,计算结果为元素,并返回结果集。
  • 实例:
val lines = sc.parallelize(Array("hello","spark","hello","world","!"))
val lines_map = lines.map(word=>(word,1))
lines_map.foreach(println)

# 返回结果为 
(hello,1)
(spark,1)
(hello,1)
(world,1)
(!,1)

filter

  • 名称: filter
  • 作用:过滤RDD中的元素,返回符合指定规则的元素集。
  • 实例:
val lines = sc.parallelize(Array("hello","spark","hello","world","!"))
val lines_filter = lines.filter(word=>word.contains("r"))
lines_filter.foreach(println)

# 返回结果为 
spark
world

flatMap

  • 名称: flatMap
  • 作用:对RDD中的每个元素,运行指定规则进行计算,计算结果为集合,并将每个元素的结果集合并为一个集合后输出为新的RDD。
  • 实例:
# =================== hello.txt ===========================
# Hello world
# Hello spark
# some world

val input = sc.textFile("hello.txt")
val input_flatmap = input.flatMap(line=>line.split(" "))
input_flatmap.foreach(println)

# 返回结果为 
Hello
world
Hello
spark
some
world

distinct

  • 名称: distinct
  • 作用: 将RDD中重复的元素保留一份,即去重
  • 实例:
val rdd1 = sc.parallelize(Array("coffee","coffee","panda","monkey","tea"))
val rdd_distinct = rdd1.distinct()
rdd_distinct.foreach(println)

# 返回结果为 
monkey
coffee
panda
tea

union

  • 名称: union
  • 作用:将RDD与参数中的RDD进行元素合并
  • 实例:
val rdd1 = sc.parallelize(Array("coffee","coffee","panda","monkey","tea"))
val rdd2 = sc.parallelize(Array("coffee","monkey","kitty"))
val rdd_union = rdd1.union(rdd2)
rdd_union.foreach(println)

# 返回结果为 
coffee
coffee
panda
monkey
tea
coffee
monkey
kitty

intersection

  • 名称: intersection
  • 作用: 与参数中的RDD进行比较,进行相交运算,返回两个RDD中共有的元素。
  • 实例:
val rdd1 = sc.parallelize(Array("coffee","coffee","panda","monkey","tea"))
val rdd2 = sc.parallelize(Array("coffee","monkey","kitty"))
val rdd_intersection = rdd1.intersection(rdd2)
rdd_intersection.foreach(println)

# 返回结果为 
monkey
coffee

subtract

  • 名称: subtract
  • 作用: 从RDD中剔除参数RDD中所包含的元素,并返回。
  • 实例:
val rdd1 = sc.parallelize(Array("coffee","coffee","panda","monkey","tea"))
val rdd2 = sc.parallelize(Array("coffee","monkey","kitty"))
val rdd_sub = rdd1.subtract(rdd2)
rdd_sub.foreach(println)

# 返回结果为 
tea
panda
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值