平面映射后合并和重新分区不会更改分区数量的变化

时间:2019-12-01 02:03:23

标签: python pyspark transformation spark-submit flatmap

我有一个要执行一些转换的数据框。我正在重新划分数据帧,以实现最大并行度。经过一系列转换后,我将打印分区数以进行验证。

但是,在进行平面图转换之后,在设置了分区数并打印了分区数之后,我可以清楚地看到分区数没有变化。

在这里输入我的代码:

source_df = spark.read.json("some_json.json", multiLine=True).repartition(24)
pprint("number of partitions in source df is {0}".format(source_df.rdd.getNumPartitions()))

transformed_rdd = source_df.select("data").rdd.flatMap(transform_data).repartition(24)
pprint(f"number of partitions in  transformed_rdd is {0}".format(transformed_rdd.getNumPartitions()))

以下是我的输出:

number of partitions in source df is 24
number of partitions in  transformed_rdd is 0

您可以看到平面图变为0后的分区数。我尝试同时使用合并和重新分区

我为什么选择24个分区?

我正在AWS EMR集群上运行此spark作业。我有一个主节点和一个从节点。我的主节点是实例类型c5.2xlarge,而从节点是m5a.xlarge。主节点包含8个vCPU,从节点包含4个。

我已经计算出我的数据帧上的分区数量理想情况下为24,该计算来自AWS发布的best practices documentation

spark.default.parallelism = spark.executor.instances * spark.executors.cores * 2

我正在python 3.6上运行Spark 2.4

谢谢

0 个答案:

没有答案