【发布时间】:2015-05-26 15:06:08
【问题描述】:
已经有人问过类似的问题。 最相似的是这个: Spark: How to split an RDD[T]` into Seq[RDD[T]] and preserve the ordering
但是,我不在乎保留订单。此外,我在数据中没有任何 ID 列。我最关心的是每一行数据只写入一个新的RDD一次!出于这个原因,我不能使用 randomSplit,尽管我很期待这样一个简单的解决方案。遍历分区的 sparkContext 也不行。
我知道将一个 RDD 拆分为多个 RDD 是没有意义的,因为 RDD 已经在许多集群中进行处理(因此会自动拆分)。
但是,根据高度复杂的业务逻辑,拆分 RDD 是一项要求,我需要使用它来实现 spark 代码,而我无法以其他任何方式实现它。
我的解决方案是从一个大的 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)
}
【问题讨论】:
-
“最大列数”是什么意思?
-
谢谢,一个错字。我的意思是行。现已编辑。
标签: split apache-spark rdd