Как создать новый Rdd со всеми возможными комбинациями элементов других Rdd в реализации spark java?

#java #apache-spark

Вопрос:

Если RDD1 = [p,k,t], теперь я хочу создать новый RDD2 со всеми возможными комбинациями,как показано ниже, с новым RDD длиной k, т. е., за исключением такой же комбинации элементов, как(p, p), (k,k),(t,t).

Комментарии:

1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Ответ №1:

Декартово объединение можно использовать с фильтром:

     List<String> data = Lists.newArrayList("p", "k", "t");
    final JavaRDD<String> values = jsc().parallelize(data);
    final JavaPairRDD<String, String> result = values
            .cartesian(values)
            .filter(kv -> kv._1 != kv._2);
 

Выход:

 (p,k)
(p,t)
(k,p)
(k,t)
(t,k)
(t,p)