PySpark实战:coalesce操作

来自CloudWiki
跳转至: 导航搜索

介绍

coalesce操作是一个变换算子,

主要作用是将RDD进行重新分区。

调用形式为rdd.coalesce(numPartitions,[isShuffle=False])

其中numPartitions参数是一个整形,比如2

而isShuffle参数是一个可选的值,默认值为False,如果设置为True ,则代表重新分区过程中进行混洗(shuffle)操作。

用途

在实际计算过程中,可以设置一个比较合理的分区数,从而提高计算效率

代码

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], 3).glom()
#[[1], [2, 3], [4, 5]]
print(rdd.collect())
#[[[1], [2, 3], [4, 5]]]
print(rdd.coalesce(1).glom().collect())
rdd2 = sc.parallelize([1, 2, 3, 4, 5, 6], 3).coalesce(1,True)
#[1, 2, 3, 4, 5, 6]
print(rdd2.collect())
##############################################
sc.stop()

输出

[[1], [2, 3], [4, 5]]
[[[1], [2, 3], [4, 5]]]
[1, 2, 3, 4, 5, 6]