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])]