Я думаю, что нет правильного или неправильного ответа на этот вопрос. Хотя может быть и лучший ответ.
Вы на правильном пути, чтобы сначала подумать о превращении rdd в PairRDD. Однако, как вы сказали, в исходной структуре RDD есть много преобразований, она быстро усложняется.
Извините за плохой рисунок.. В любом случае, наверное, для мультизависимости не очень понятно, что ставить в ключевое поле PairRDD. Я не уверен, что это так для вас, но я думаю, что если отношение не один к одному, может быть много лиц, которые производят одно целое число. Если вы используете операцию редукции к целому числу, прежде чем интерпретировать информацию о зависимости, вам необходимо учитывать, что у целого числа может быть не только один предок.
В любом случае, я думаю, что лучший способ решить эту проблему — добавить поле ArrayList с уникальным идентификатором в RDD. Вместо создания PairRDD, добавляющего ненужную структуру, просто подумайте об этом поле как о графе, обозначающем родословную текущего поля RDD.
Например, объект Persons будет иметь поле с именем «зависимость», длина которого равна 0 arraylist, поскольку у него нет предка. После этого допустим, что у вас по какой-то причине произошло преобразование в Double. Затем результирующий RDD содержит поле с именем «зависимость», длина которого равна 1, что обозначает поле уникального идентификатора объекта Person. Наконец, у нас есть преобразование в Integer. Опять же, у нас есть RDD с полем с именем «зависимость», которое имеет длину 2 (потому что у нас было два предка для этого одного целого числа), которое обозначает уникальный идентификатор объекта Person и уникальный идентификатор объекта Double.
Я думаю, что мое объяснение немного длинное и многословное, но я надеюсь, что вы поняли смысл.
Наконец, если вы выполняете операцию сокращения между RDD, вы должны подумать, действительно ли у вас есть случай один к одному. Поскольку одно целое число могло не исходить от одного объекта Person, если вы хотите обнаружить полную родословную этого целого числа, вам нужно добавить всю информацию о зависимостях в список массивов. Кроме того, когда вы расшифровываете этот список массивов «зависимостей», вы должны иметь в виду, что длина списка может быть произвольной, если отношение не один к одному и если вы используете сокращение между СДР.
Я думал, что лучшим решением было это, но я думаю, что на этот вопрос может быть более простой ответ. Если вы узнаете один, дайте мне знать!
person
Hyun Joon Kim
schedule
08.05.2016