#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)