您的位置:首页 > 编程语言 > Python开发

Python--Spark RDD操作(Python)总结

2017-03-02 22:15 525 查看
来源:http://blog.csdn.net/sinat_29581293/article/details/51487283


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
34

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


mapPartitions(func)

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

1
2
34
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
34
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
34

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


distinct()

对RDD的元素去重
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: