从ORC读取数据后,我正在重新分区数据帧,
Available cores 6
df = spark.read.orc("filePath")
df.rdd.getNumPartitions()
Giving output as 12 partitions ( It is expected job ran locally so ( cores * 2) in my case 6 * 2 = 12)
Now i am increasing the partitions
df = df.repartition(50)
df.rdd.getNumPartitions() ---- returning 50 partitions
在SparkUI中观察到,作业仍然执行12个任务,而跳过了50个任务阶段
如何告诉spark使用50个任务而不是默认的12个任务?即使强制重分区为50,为什么spark仍然使用12个任务?为什么不是50个任务呢?你能帮我一下吗如下图所示
Ui火花
我承认阅读Spark UI的东西并不总是很清楚。我有时不能完全理解它。我在Databricks社区版上看到了类似的情况,但这不是一个公平的比较,因为它是一个8核的驱动程序。你没有说明你的Spark版本
当请求repartition(n)
—>这是轮循分区。源是12个分区,目标是50个分区。所以这12项任务在各方面都很好。您需要从12个分区切换到50个分区,从现有分区切换到新分区。50 + 12 = 62,跳过我认为是之前还没有返回到系统分区。
回复很少,所以我认为现在不那么受欢迎了。