spark将rdd转为string_spark rdd 转换和动作

本文详细介绍了Spark中RDD的转换和动作操作,包括parallelize、map、filter、union、intersection、subtract等基本操作,以及reduce、fold、aggregate等聚合操作,并通过实例展示了如何将RDD转换为字符串类型。
摘要由CSDN通过智能技术生成

2017-07-22

概述

本文对spark rdd的转换和动作进行总结和实际操作演示.

RDD(Resilient Distributed Datasets),弹性分布式数据集, 是spark分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型.即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,然而这些限制使得实现容错的开销很低。

rdd 的分布式,因为rdd支持分区, 自动把一个rdd根据partition分发到n台spark设备进行处理. 这些对用户完全透明. 用户感觉和操作本地数据一样.

rdd通过parallelize和textFile或流来创建. 再通过转换得到新的rdd. 转换的过程不是立即执行, 而是在需要动作action时才开始. 这样方便系统进行自动优化.

rdd操作示例

parallelize一般用于测示创建rdd.

scala> val square = sc.parallelize(List(1,2,3,4))

scala> val sq = square.map(x=>x*x).collect()

sq: Array[Int] = Array(1, 4, 9, 16)

scala> val drink1=sc.parallelize(List("coffee","tea","coffee","panda","monkey"))

scala> val rdd2 = sc.parallelize(List("coffee","money","kitty","猫"))

scala> val r11= rdd1.union(rdd2).collect()

r11: Array[String] = Array(coffee, tea, coffee, panda, monkey, coffee, money, kitty, 猫)

scala> val r12 = rdd1.intersection(rdd2).collect()

r12: Array[String] = Array(coffee)

scala> val r13 = rdd1.subtract(rdd2).collect()

r13: Array[String] = Array(tea, panda, monkey)

scala> val users=sc.parallelize(List("user1","user2"))

scala> val tags = sc.parallelize(List("经济","政治","文化"))

scala> users.cartesian(tags).collect()

res1: Array[(String, String)] = Array((user1,经济), (user1,政治), (user1,文化), (user2,经济), (user2,政治), (user2,文化))

普通RDD操作

转换 Transformation

转换有如下一些种类

map(func)

filter(func)

repartition(numPartitions)

flatMap(func)

repart

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值