如何从RDD Spark Scala中删除最后一行

如何从RDD Spark Scala中删除最后一行,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我想使用.mapPartitionsWithIndex函数从RDD中删除最后一行 我试过下面的代码 val withoutFooter = rdd.mapPartitionsWithIndex { (idx, iter) => if (idx == noOfTotalPartitions) { iter.drop(size - 1) } else iter } 但无法得到正确的结果。drop将删除前n个元素并返回其余元素 请在此

我想使用.mapPartitionsWithIndex函数从RDD中删除最后一行

我试过下面的代码

val withoutFooter = rdd.mapPartitionsWithIndex { (idx, iter) =>     
     if (idx == noOfTotalPartitions) {
         iter.drop(size - 1)
     }
     else iter 
}

但无法得到正确的结果。

drop将删除前n个元素并返回其余元素

请在此处阅读更多内容

下面的代码适合我

val rdd = sc.parallelize(Array(1,2,3,4,5,6,7,8,9),4)

val lastPartitionIndex = rdd.getNumPartitions - 1

rdd.mapPartitionsWithIndex { (idx, iter) => 
    var reti = iter
    if (idx == lastPartitionIndex) {
        var lastPart = iter.toArray
        reti = lastPart.slice(0, lastPart.length-1).toIterator
    }
    reti
}

可能重复您可以选择此链接,请您提供有关以下内容的更多信息:
size
noOfTotalPartitions