получить количество общей строки из двух RDD в scala

У меня есть 2 RDD, т.е. RDD[String] и RDD[String,String], и их содержимое следующее.

RDD[String]                     RDD[String,String]
mobile                          laptop,aa
smartphone                      printer,bb
desktop                         scanner,ya
laptop                          mobile,gb
printer                         burger,gn

Мне нужно пересечь эти два RDD и получить количество общих ключевых слов. Мой вывод должен быть 3, потому что принтер, ноутбук и мобильный телефон являются общими.

Я пробовал с intersection(), но не понял. Я сделал с этим массивом, но не знаю, что делать с RDD (потому что мне нужно работать с RDD).

Вот что я пробовал.

tokenArray.intersect(param._1.split("/")).size > 2)   

Пожалуйста, дайте мне ссылку или подсказку.


person Sandip Armal Patil    schedule 24.11.2015    source источник
comment
Не знаю, что вы пытались сделать с этим intersection, но он принимает RDD в качестве аргумента, а не предиката.   -  person The Archetypal Paul    schedule 24.11.2015
comment
И этот предикат вообще не подходит под описание вашей проблемы. Например, в вашем примере данных нет ``. Измените свой вопрос на MVCE (stackoverflow.com/help/mcve)   -  person The Archetypal Paul    schedule 24.11.2015


Ответы (1)


Решает ли следующее вашу проблему?

val keywords = sc.parallelize(Seq("mobile", "smartphone", "desktop", "laptop", "printer"))
val data = sc.parallelize(Seq(("laptop", "aa"), ("printer", "bb"), ("scanner", "ya"),
  ("mobile", "gb"), ("burger", "gn")))

val keysInData = data.map(_._1)

val result = keywords.intersection(keysInData).count()
person Till Rohrmann    schedule 24.11.2015