Ребята, привет!
Подскажите, пожалуйста, можно ли сделать в Spark методом RDD.zipPartitions вот такое:
1. Если принять, что к rdd1 и rdd2 уже применен один и тот же партишенер и выполнен .sortWithinPartitions, можно ли на этапе .zipPartitions сделать что-то вроде mergeSort, объединить два отсортированных итератора в один отсортированный?
Вот так очень просто: rdd1.zipPartitions(rdd2) { (iter1, iter2) => iter1 ++ iter2 }
но совсем не хочется после сортировки и слияния делать еще одну сортировку
2. Произвести anti join, то есть, сделать примерно так:
def getKey(row: Row) = ???
rdd1.zipPartitions(rdd2) {
(iter1, iter2) => iter1.filterNot( row => iter2map(getKey).toSet.contains(getKey(row)))
}
Буду очень благодарен за конкретные примеры