Как мы можем сгруппировать несколько значений в rdd? - PullRequest
0 голосов
/ 19 марта 2020

Например: rdd выглядит как Array(["vijay",21,"pune","male"],["ajay",31,"mymbai","male"],["alia",21,"delhi","female"])

Я хочу сделать groupBy на city и gender (без использования фрейма данных)

rdd.groupBy(x=>x(2),x(3)).collect выдает ошибку, но rdd.groupBy(x=>x(2)).collect отлично работает

Кто-нибудь может подсказать, как сгруппировать несколько элементов в rdd?

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Спасибо за ответ, я нашел еще одно решение для этого:

Val newrdd = rdd.map {case (имя, возраст, город, пол) => ((город, пол), имя, возраст )}. groupbykey ()

0 голосов
/ 19 марта 2020

Проверьте приведенный ниже пример -

val list = List(("a","b","c"),("x","y","z"),("p","b","c"))
val temp = sc.parallelize(list)
temp.groupBy(x => x._2+x._3).collect

Вывод

Array[(String, Iterable[(String, String, String)])] = Array((yz,CompactBuffer((x,y,z))), (bc,CompactBuffer((a,b,c), (p,b,c))))

Обратите внимание, что groupBy () принимает элемент в RDD (в данном случае кортеж из 3 значений) и возвращает назад ключ, с которым записи могут быть сгруппированы.

Вот определение groupBy для вашей справки

def groupBy[K](f: ((String, String, String)) => K,p: org.apache.spark.Partitioner)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...