【问题标题】:Spark how can I see data in each partion of a RDDSpark如何查看RDD每个部分中的数据
【发布时间】:2020-10-26 04:40:40
【问题描述】:
我现在希望自己测试repartition() 和coalesce() 的行为,尤其是在numsPartion 保持不变的不太常见的情况下,我希望看到是否会调用具有相同分区号的重新分区仍将对所有数据进行完全洗牌。然后我意识到我缺乏检查每个分区的确切内容的措施。我只是使用一个瘫痪列表作为我的示例 RDD。有什么方法可以检查每个分区的内容,以便验证我的疑问?
哦,也许还有其他更新的 API 可以满足这个目标?
提前致谢。
【问题讨论】:
标签:
apache-spark
rdd
partition
【解决方案1】:
您可以使用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))