如何在 Spark 中随机洗牌 RDD 的行?
How to randomy shuffe rows of an RDD in Spark?
我有一个 Rdd[String],我想打乱这个 Rdd 的所有行。我该如何实现?
例如:
名为 rdd 的 RDD 对象,你可以 运行: rdd.collect.foreach(t => println(t)) 有输出:
1
2
3
4
我想洗牌 rdd 的行,以便 运行ning rdd.collect.foreach(t => println(t)) 在洗牌之后就像:
3
4
1
2
您并没有真正洗牌 RDD。直接对 RDD 进行洗牌在概念上没有多大意义,因为数据是分区的,并且在这种情况下无法保证顺序。如果这是您想要采用的路线,您可以查看自定义分区程序。
现在,通过执行 collect(),您已将其转换为 Scala 集合。您可以使用标准集合库来打乱数据。
Collections.shuffle(rdd.collect).foreach(t=>println(t))
我有一个 Rdd[String],我想打乱这个 Rdd 的所有行。我该如何实现?
例如:
名为 rdd 的 RDD 对象,你可以 运行: rdd.collect.foreach(t => println(t)) 有输出:
1
2
3
4
我想洗牌 rdd 的行,以便 运行ning rdd.collect.foreach(t => println(t)) 在洗牌之后就像:
3
4
1
2
您并没有真正洗牌 RDD。直接对 RDD 进行洗牌在概念上没有多大意义,因为数据是分区的,并且在这种情况下无法保证顺序。如果这是您想要采用的路线,您可以查看自定义分区程序。
现在,通过执行 collect(),您已将其转换为 Scala 集合。您可以使用标准集合库来打乱数据。
Collections.shuffle(rdd.collect).foreach(t=>println(t))