Я долго искал решение, но не нашел правильного алгоритма.
Используя Spark RDD в scala, как я могу преобразовать RDD[(Key, Value)]
в Map[key, RDD[Value]]
, зная, что я не могу использовать сбор или другие методы, которые могут загружать данные в память?
На самом деле, моя конечная цель — зациклиться на Map[Key, RDD[Value]]
по ключу и вызвать saveAsNewAPIHadoopFile
для каждого RDD[Value]
.
Например, если я получаю:
RDD[("A", 1), ("A", 2), ("A", 3), ("B", 4), ("B", 5), ("C", 6)]
Мне бы хотелось :
Map[("A" -> RDD[1, 2, 3]), ("B" -> RDD[4, 5]), ("C" -> RDD[6])]
Интересно, будет ли не слишком дорого сделать это, используя filter
для каждого ключа A, B, C из RDD[(Key, Value)]
, но я не знаю, будет ли эффективным вызов фильтра столько раз, сколько есть разных ключей? (конечно, нет, но, может быть, используя cache
?)
Спасибо