gpt4 book ai didi

split - 如何在给定每个 RDD 的最大行数且不使用 ID 列的情况下将 RDD 拆分为多个(较小的)RDD

转载 作者:行者123 更新时间:2023-12-01 04:37:00 26 4
gpt4 key购买 nike

已经有人问过类似的问题。最相似的是这个: Spark: How to split an RDD[T]` into Seq[RDD[T]] and preserve the ordering

但是,我不关心保留顺序。此外,我在数据中没有任何 ID 列。我最关心的是每一行数据只写入一个新的RDD一次!出于这个原因,我不能使用 randomSplit,尽管我期待这样一个简单的解决方案。遍历分区的 sparkContext 也不起作用。

我知道将一个 RDD 拆分为多个 RDD 没有任何意义,因为 RDD 已经可以跨多个集群进行处理(因此会自动拆分)。

但是,根据我需要用来实现 spark 代码的高度复杂的业务逻辑,拆分 RDD 是一项要求,我无法以任何其他方式实现它。

我的解决方案是从一个大的 RDD 中选择范围,然后简单地将每个范围放入一个新的 RDD 中。然而,这看起来是一项耗时的任务,因此不是一个好的解决方案。

如果有人能帮助我,并将其降低到初学者水平,我将不胜感激。

对我有用的解决方案:

val numberOfRows = 10000

indexedRDD = RDD.zipWithIndex

for (FROM <-1 to numOfPartitions){
val tempRDD = indexedRDD.filter(from=> {from._2>from && from._2 < from+numberOfRows}).map(from=>from._1)
}

最佳答案

您可以使用其中一列中的数据并根据它进行过滤吗?

您还可以制作一个带有 mapPartitionsWithIndex 的程序,该程序将从每个分区中获取前 n 行用于第一个 RDD,然后再次 mapPartitionsWithIndex 并将其余行用于第二个 RDD。如果您需要精确的行数,那么您需要在那里做一些数学运算,但这是可以做到的。

关于split - 如何在给定每个 RDD 的最大行数且不使用 ID 列的情况下将 RDD 拆分为多个(较小的)RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29213404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com