PySpark实战:groupBy操作
来自CloudWiki
介绍
groupBy操作是一个变换算子,
它接收一个函数func,这个函数返回的值作为key,
然后通过这个key来对其中的元素进行分组,并返回一个新的RDD对象。
代码
import findspark findspark.init() ############################################## from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("local[1]") \ .appName("RDD Demo") \ .getOrCreate(); sc = spark.sparkContext ############################################# rdd = sc.parallelize([1, 2, 3, 4, 5, 10]) def f(x): #1, 2, 3, 4, 5, 10 print(x) #x % 2 的值 0 或 1 ,并作为Key return x % 2 rdd = rdd.groupBy(f) result = rdd.collect() print(result) ret = sorted([(x, sorted(y)) for (x, y) in result]) #[(0, [2, 4, 10]), (1, [1, 3, 5])] print(ret) ############################################## sc.stop()
- rdd.groupBy(f)返回的RDD中是KV格式的数据,其中V是一个迭代对象,因此需要遍历进行元素访问。
输出
[(0, [2, 4, 10]), (1, [1, 3, 5])]