Как удалить последнюю строку из RDD Spark Scala - PullRequest
0 голосов
/ 15 октября 2019

Я хочу удалить последнюю строку из RDD с помощью функции .mapPartitionsWithIndex.

Я пробовал ниже код

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

Но не смог получить правильный результат.

1 Ответ

0 голосов
/ 15 октября 2019

drop удалит первые n элементов и вернет оставшиеся элементы

Подробнее здесь https://stackoverflow.com/a/51792161/6556191

Ниже код работает для меня

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
}
...