2016-12-15 2 views
-3

Это может быть полезно для Apriori алгоритмаScala Спарк массивы комбинации без дубликата

У меня есть 2 массивы:

scala> a.take(3) 
res1: Array[String] = Array(cat, dog, bird) 
scala> b.take(3) 
res2: Array[String] = Array(cat, dog, bird) 

Как я могу сделать все пары комбинаций без повторяющихся пар? так, например:

с>(cat,dog) но не с дубликатом>(dog, cat)

scala> for (a_ <- a; b_ <-b) yield (a_, b_)  
<console>:35: error: type mismatch; 
found : org.apache.spark.rdd.RDD[(String, String)] 
required: TraversableOnce[?] 

наконец, я хотел бы только иметь:

(cat, dog) 
    (cat, bird) 
    (dog, bird) 
+3

Пожалуйста, включите код в виде текста, а не изображений –

+0

Пожалуйста размещаете код, который вы написали себя как попытка решения – radumanolescu

+1

Вы можете найти решение [здесь] (HTTPS : //i.imgur.com/dsBsmbR.png) – Odomontois

ответ

-1

Мы используем фильтр х < у , тогда нам не нужно заказывать, потому что это исключает все неправильные пары.

Наконец ответ:

val combinations = a.cartesian(b).filter{case(x,y) => x < y} 
+0

Довольно уверен, что в массивах нет «декартовых» операций, определенных в стандартных неявных обогащениях – Odomontois

+0

@Odomontois, это RDD, несмотря на пример кода из OP. См. Сообщение об ошибке. –

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