Scala 从另一个分区访问特定RDD分区

Scala 从另一个分区访问特定RDD分区,scala,apache-spark,rdd,Scala,Apache Spark,Rdd,当我使用mapPartition或其他函数时,我希望从当前分区上的分区旁边获取元素 更一般地说,我很想知道如何从RDD访问特定分区 val rdd = sc.parallelize(Array(1,2,3,4,5,6,7,8,9,10,11,12),4) 我想要 val rdd_2 = rdd.something(2) = RDD[Array(4,5,6)] 如果不清楚,谢谢你告诉我 更一般地说,我很想知道如何从RDD访问特定分区 val rdd = sc.parallelize(Array

当我使用
mapPartition
或其他函数时,我希望从当前分区上的分区旁边获取元素

更一般地说,我很想知道如何从RDD访问特定分区

val rdd = sc.parallelize(Array(1,2,3,4,5,6,7,8,9,10,11,12),4)
我想要

val rdd_2 = rdd.something(2) = RDD[Array(4,5,6)]
如果不清楚,谢谢你告诉我

更一般地说,我很想知道如何从RDD访问特定分区

val rdd = sc.parallelize(Array(1,2,3,4,5,6,7,8,9,10,11,12),4)
出于调试目的,您可以使用
TaskContext

import org.apache.spark.TaskContext

rdd
   .mapPartitions(iter => Iterator((TaskContext.get.partitionId, iter.toList)))
   .filter{case (k, _) => k == 1}
   .values
内部Spark仅用于在选定分区上操作

当我使用mapPartition或其他函数时,我希望从当前分区上的分区旁边获取元素

可能有一些黑客的方式来实现这样的事情,但一般来说,这是不可能的。假设每个分区都可以独立处理,这几乎是Spark计算模型背后的核心概念


如果您想一次访问数据的某些特定子集,可以使用自定义分区器

你能举例说明吗。