Spark RDD操作(Python)总结

17 篇文章 0 订阅

Spark 提供了很多Transformation用于创建RDD,总结如下(Python)

map(func)

将原RDD中每个元素代入带入func

1
2
3
>>> rdd = sc.parallelize([1, 2, 3])
>>> rdd.map(lambda x: x*x).collect()
[1, 4, 9]
filter(func)

返回包含所有在func中结果为True

1
2
3
>>> rdd = sc.parallelize([1,2,3])
>>> rdd.filter(lambda x: x > 2).collect()
[3]
flatMap(func)

将原RDD中的每一个元素映射为0个或者多个元素,每次map过程的返回值必须是集合(可空)

1
2
3
4
>>> rdd = sc.parallelize([1,2,3])
>>> rdd.flatMap(lambda x: range(1, x))
// [] || [1] || [1 2]
[1, 1, 2]
mapPartitions(func)

func方法分别应用于各个分区

1
2
3
4
5
>>> rdd = sc.parallelize([1,2,3,4], 2)
// 两个分区的数据分别为 [1,2] [3,4]
>>> def f(x): yield sum(x)
>>> rdd.mapPartitions(f).collect()
[3, 7]
 mapPartitionsWithIndex(func)

mapPartitions方法一样, func传入参数增加index

1
2
3
4
5
>>> rdd = sc.parallelize([1,2,3,4], 2)
>>> def f(i, x): yield i*sum(x)
>>> rdd.mapPartitionsWithIndex(f).collect()
//[0*(1+2), 1*(3+4)]
[0, 7]
sample(withReplacement, fraction, seed)

对已有的RDD进行采样,
withReplacement 布尔型, 表示是否用随机值替换
fraction 采样比例
seed 随机种子数

1
2
3
>>> rdd = sc.parallelize(range(100))
>>> rdd.sample(False, 0.2, 81).count()
24
union(RDD)

合并两个已有的RDD,返回新一个的新的RDD

intersection(RDD)

求两个RDD的交集,并去重,会引发洗牌操作

1
2
3
4
>>> rdd1 = sc.parallelize([1, 2, 3, 4])
>>> rdd2 = sc.parallelize([3, 4, 5, 6])
>>> rdd1.intersection(rdd2).collect()
[3,4]
distinct()

对RDD的元素去重

groupByKey()

作者: VALUX

链接: http://valux.cn/2015/05/11/bc7bf5dca5cd6d8f/

本文基于署名-非商业性使用-相同方式共享 2.5中国大陆许可协议发布,转载请保留本文的署名 Valux 和 原文链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值