2015-04-08 9 views
1

У меня есть простой вопрос, предположу, что у меня есть 2 РД:Скала пересечения с графом

RDD1: [a,b,b,c,c,c,d] RDD2:[a,b,c,d] 

и я хочу, чтобы узнать, сколько а, Ь, с, d есть такие, что возвращаемые результаты должны быть что-то вроде:

RDD:[(a,b,c,d),(1,2,3,1)] 

Это можно легко сделать с помощью списков, но в РДУ, я, кажется, собрать их первый в массив и сделать что-то вроде:

count(_==string) 

есть ли что-то более легкое, с чем я мог бы работать?

ответ

1

У меня очень мало знаний о RDD или Spark. но в Скале вы можете попробовать что-то вроде этого:

val l1 = List('a', 'b', 'c', 'd') 
    val l2 = List('a', 'b', 'b', 'c', 'c', 'c', 'd') 

    def f(l1: List[Char], l2: List[Char]):(List[Char],List[Int]) = { 
    val count = l1.map { 
     x => l2.count(_ == x) 
    }.toList 
    (l1, count) 
    } 

    f(l1,l2) 

Выход на РЕПЛ:

res0: (List[Char], List[Int]) = (List(a, b, c, d),List(1, 2, 3, 1)) 
+0

спасибо за ваш ответ, ваш метод, что я в настоящее время, но я предполагал, что операции RDD будет более эффективное вычисление, потому что мне также нужно использовать результаты для объединения с другими данными, которые я обработал. – GameOfThrows

 Смежные вопросы

  • Нет связанных вопросов^_^