如何从RDD Spark Scala中删除最后一行
我想使用.mapPartitionsWithIndex函数从RDD中删除最后一行 我试过下面的代码如何从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个元素并返回其余元素 请在此
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
?