如何根据列中项目数量的计数对DataFrame进行分区。 假设我们有一个包含100个人的DataFrame(列是
如果我们的数据集包含80个来自中国的人,15个来自法国,5个来自古巴,那么我们将希望为中国创建8个分区,为法国创建2个分区,为古巴创建1个分区。
以下代码将无法正常工作:
是否有任何方法可以动态设置每列的分区数?这将使创建分区数据集变得更加容易。
first_name
和country
),我们想为每个国家的10个人创建一个分区。如果我们的数据集包含80个来自中国的人,15个来自法国,5个来自古巴,那么我们将希望为中国创建8个分区,为法国创建2个分区,为古巴创建1个分区。
以下代码将无法正常工作:
df.repartition($"country")
:这将为中国创建1个分区,为法国创建1个分区,为古巴创建1个分区df.repartition(8,$ "country",rand)
:这将为每个国家创建多达8个分区,因此它应该为中国创建8个分区,但France&Cuba分区未知。 France可能在8个分区中,而Cuba可能在多达5个分区中。 请参见此答案以了解更多详细信息。
repartition()
文档:
当我查看repartition()
方法时,我甚至没有看到一个带有三个参数的方法,因此看起来其中一些行为没有记录。是否有任何方法可以动态设置每列的分区数?这将使创建分区数据集变得更加容易。
$"country", rand
在第二次调用中一起作为partitionExprs
。 - Kombajn zbożowy