有没有办法让火花按大小而不是数据计数重新分区

Is there a way to make spark re-partition by size rather than count of the data

我有一个数据集按每个分区的记录数平均划分,但某些分区的数据大小是其他分区的 4 倍或更多倍。每条记录都有一个集合,我想在某些记录中可能会更大。由于这种不平衡的记录,这导致一些分区看起来像数据倾斜需要更长的时间。 如果我可以在 Spark 中启用一些日志记录来打印正在处理的每个分区的字节大小和可以帮助我进行故障排除的行的大小。因为数据正在使用他们的 Spark 连接器发送到 Cassandra,该连接器正在对自己进行一些重新分区。

无法按大小重新划分数据集。在我的例子中,我有一个数组,其中一些行将包含大量条目。这个结果是数据异常,我可以通过简单地向数据集添加过滤器来过滤掉这些行。

df.filter( size($colname) < 1000)