Spark 如何在 RDD 的每个部分中查看数据

Spark how can I see data in each partion of a RDD

我现在想自己测试 repartition()coalesce() 的行为,尤其是在 numsPartion 保持不变的不太常见的情况下,我希望看到会调用具有相同分区号的重新分区仍将对所有数据进行完全洗牌。然后我意识到我缺乏检查每个分区的确切内容的措施。我只是使用一个瘫痪列表作为我的示例 RDD。有什么方法可以检查每个分区的内容,以便验证我的疑问吗? 哦,也许还有其他更新的 API 可以满足这个目标? 提前致谢。

您可以使用RDD.glom(),其中

Returns an RDD created by coalescing all elements within each partition into an array.

例如,可以使用以下 8 分区 RDD 检查:

val rdd = sc.parallelize(Seq(1,2,3,4,5,6,7,8,9,10))
rdd.glom().collect()

//Result
res3: Array[Array[Int]] = Array(Array(1), Array(2), Array(3), Array(4, 5), 
                                Array(6), Array(7), Array(8), Array(9, 10))