我想按密钥对RDD进行分区,并且每个parition只包含一个密钥的值。例如,如果我有100个不同的密钥和I值repartition(102),则RDD应该有2个空分区和100个分区,每个分区包含一个密钥值。
我尝试过,groupByKey(k).repartition(102)但这并不能保证每个分区中密钥的排他性,因为我看到一些分区包含更多的单个值和2个以上的空值。
标准API中有没有办法做到这一点?
对于RDD,您是否尝试过使用partitionBy按键对RDD进行分区,就像在这个问题中一样?如果需要,您可以将分区数指定为要删除空分区的键数。
在数据集API,你可以使用重新分配与Column作为参数的值在该列进行分区(但是注意,这里使用的值spark.sql.shuffle.partitions作为分区的数量,所以你会得到更多的空分区)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。