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

Boy*_*ang 3 partition apache-spark rdd

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

ern*_*t_k 6

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

返回通过将每个分区内的所有元素合并到数组中而创建的 RDD。

例如,可以使用以下命令检查以下 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))
Run Code Online (Sandbox Code Playgroud)