如何使用合并更改分区数?

Posted

技术标签:

【中文标题】如何使用合并更改分区数?【英文标题】:How to change the number of partitions using coalesce? 【发布时间】:2015-01-22 10:35:24 【问题描述】:

我在 java 和 Cassandra 数据库中使用 spark,在我的程序中我使用 mapPartitions 来请求 cassadra。但我注意到我的mapPartitions 仅在一个火花节点中执行。为了查看我的 RDD 中的分区数,我使用了:

System.out.println(MyRDD.partitions().size());

它显示 1 个分区。 我发现我可以编辑分区数:

JavaRDD MyRDD2= MyRDD.coalesce(8, false);

但是不行,我的分区号还是1。

您能帮我更改分区数吗?

【问题讨论】:

【参考方案1】:

您必须将 shuffle 设置为 true 才能合并到更多的分区:

JavaRDD MyRDD2= MyRDD.coalesce(8, true);

【讨论】:

【参考方案2】:
As per coalesce() function of RDD, we can reduce the number of partition. For increasing partition number repartition() function should use.

var textRDD = scontext.textFile("file:///home/rajeev/Test.scala", 3);

    print("================== "+textRDD.getNumPartitions);

   var newRDD = textRDD.coalesce(6, false);
print("==================:: "+newRDD.getNumPartitions+"\n");

   var newRDD1 = textRDD.coalesce(6, true);
print("==================:: "+newRDD1.getNumPartitions+"\n");

Output is 3 and 3 and 6 respective print statement.

Ideally it should not be happen. Please could you explain. Is it because we are shuffling data.

【讨论】:

以上是关于如何使用合并更改分区数?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改分区ID为AF?

Spark:如何指定持有 RDD 的 executor 数量?

如何在 Apache Nifi 中合并分区的 Json

如何更改分区排序?(严重性)

如何更改分区排序?(严重性)

如何在 Spark 中使用 Python 查找 DataFrame 中的分区数以及如何在 Spark 中使用 Python 在 DataFrame 中创建分区