我有一个 Rdd[String],我想洗牌这个 Rdd 的所有行。我如何实现这一点?
例如:
名为rdd的RDD对象,你可以运行:rdd.collect.foreach(t => println(t))有输出:
1
阿拉伯数字
3
四
我想洗牌rdd的行,以便在洗牌后运行rdd.collect.foreach(t => println(t))是这样的:
3
四
1
阿拉伯数字
你并没有真正洗牌RDD。直接洗牌RDD在概念上没有多大意义,因为数据是分区的,在这种情况下不能保证顺序。如果这是您想要采用的路线,您可以查看自定义分区程序。
现在,通过执行 collect(),您已经将其转换为 Scala 集合。可以使用标准集合库来随机排列数据。
Collections.shuffle(rdd.collect).foreach(t=>println(t))