Spark的弹性分布式数据集(Resilient Distributed Dataset,简称RDD)是其最基本的抽象,代表了分布在集群中的元素集合。RDD提供了一系列的操作,可以分为两类:转换操作(Transformations)和行动操作(Actions)。

转换操作(Transformations):

1. map(func): 对RDD中的每个元素应用函数func,返回一个新的RDD。
   rdd = sc.parallelize([1, 2, 3, 4, 5])
   squared_rdd = rdd.map(lambda x: x * x)

2. filter(func): 返回一个仅包含满足条件的元素的新RDD。
   rdd = sc.parallelize([1, 2, 3, 4, 5])
   filtered_rdd = rdd.filter(lambda x: x % 2 == 0)

3. flatMap(func): 类似于map,但每个输入元素可以映射到零个或多个输出元素。
   rdd = sc.parallelize([1, 2, 3, 4, 5])
   flat_mapped_rdd = rdd.flatMap(lambda x: (x, x * x))

4. union(other): 返回包含两个RDD元素的并集的新RDD。
   rdd1 = sc.parallelize([1, 2, 3])
   rdd2 = sc.parallelize([3, 4, 5])
   union_rdd = rdd1.union(rdd2)

5. distinct(): 返回一个包含不同元素的新RDD。
   rdd = sc.parallelize([1, 2, 2, 3, 4, 4, 5])
   distinct_rdd = rdd.distinct()

行动操作(Actions):

1. collect(): 将RDD的所有元素返回给驱动程序。
   rdd = sc.parallelize([1, 2, 3, 4, 5])
   result = rdd.collect()

2. count(): 返回RDD中元素的个数。
   rdd = sc.parallelize([1, 2, 3, 4, 5])
   count = rdd.count()

3. reduce(func): 使用二进制操作函数func来减少RDD的元素。
   rdd = sc.parallelize([1, 2, 3, 4, 5])
   sum_result = rdd.reduce(lambda x, y: x + y)

4. first(): 返回RDD的第一个元素。
   rdd = sc.parallelize([1, 2, 3, 4, 5])
   first_element = rdd.first()

5. take(n): 返回RDD的前n个元素。
   rdd = sc.parallelize([1, 2, 3, 4, 5])
   first_three_elements = rdd.take(3)

这些是一些常见的RDD操作,Spark提供了更多的操作,以及优化和分布式计算的支持,允许你有效地处理大规模数据。


转载请注明出处:http://www.pingtaimeng.com/article/detail/9341/Spark