输入就像
[K1, Tuple(Array A, Array B)]
[K2, Tuple(Array A, Array B)]
[K3, Tuple(Array A, Array B)]
我想要输入的是:
在此操作之后,我想得到这个结果:
[(A[0],B[0]), K1]
[(A[0],B[1]), K1]
[(A[0],B[2]), K1]
[(A[1],B[0]), K1]
[(A[0],B[0]), K2]
[(A[0],B[1]), K2]
[(A[0],B[0]), K3]
我使用flatMapToPair
来执行此操作。 flatMapToPair
返回一个输出,因此我必须将每个键值对合并到一些列表中,如下所示:
[K1, Tuple(Array A(size 2),Array B(size 2))]
== flatMapToPair=>
ArrayList{[(A[0],B[0]),K1],[(A[0],B[1]),K1],[(A[1],B[0]),K1],[(A[1],B[1]),K1]}
但是,在这种情况下,当输入数据太大时,输出(ArrayList)太大而无法处理RDD(Spark中的RDD大小不能大于Integer.MAX_VALUE
)。所以,我需要另一种方法来避免大输出。