我有值V1,V2,V3,V4,V5,......的Spark序列。如何将此值分组到(V1,V2,V3),(V4,V5,V6),(V7,V8) ,V9)?
值需要按任意顺序进行分组,因此我认为groupBy的使用将略微开销(就性能而言)。还有其他方法吗?
答案 0 :(得分:0)
除非您已经确保每个分区中的元素数量可以被您想要分组的数字整除,否则没有简单的方法可以做到这一点。假设它是,并且被称为nicelyPartitionedRdd
,并且您想要的每个组的大小是n
然后
nicelyPartitionedRdd.mapPartitions(_.grouped(n))
会奏效。至于创建nicelyPartitionedRdd
,您可以使用此答案https://stackoverflow.com/a/25204589/1586965