Используя Spark, один из промежуточных шагов моего алгоритма выведет (Key, Vector) в PairRDD.После завершения этого шага я хотел бы сгенерировать все возможные 2-комбинации клавиш и выполнить дальнейшие операции над их значениями, т. Е. Хотел бы иметь PairRDD с ((Key1, Key2), (Vector1, Vector2)).
Однако я не уверен, как сделать это эффективно с помощью Spark. Единственный способ, который я могу себе представить, - это собрать все пары ключ-значение на одной машине и выполнить там комбинации, которыеочевидно, не масштабируется.
Я думаю, что смогу воспользоваться еще одним свойством моего набора данных, хотя: мне нужно учитывать только комбинацию (Key1, Key2), если скалярное произведениеиз двух векторов значений (Vector <> 1, Vector <> 2) не равен нулю.(На практике мои векторы - это HashMap, а произведение с нулевой точкой означало бы пустое пересечение набора ключей)
Есть идеи о том, как я могу добиться этого масштабируемым образом?Я не могу понять это.Спасибо !!