Я использую Spark 2.4.0 и хотел бы узнать, как решить следующую проблему с помощью Spark:
Каждая запись в нижеприведенных фреймах данных может иметь два разных формата с предоставленными идентификаторами. Я хотел бы сгруппировать их, если две записи имеют один и тот же идентификатор (либо в формате 1, либо в формате 2), и назначить идентификатор группы для каждой из групп.
например,
Фрейм входных данных:
-------------------------------
Format1 Id | Format2 Id |
-------------------------------
Format1_1 | Format2_1 |
Format1_2 | Format2_1 |
Format1_3 | Format2_1 |
Format1_4 | Format2_2 |
Фрейм выходных данных:
-------------------------------------------
Format1 Id | Format2 Id | Group Id |
-------------------------------------------
Format1_1 | Format2_1 | 1 |
Format1_2 | Format2_1 | 1 |
Format1_3 | Format2_1 | 1 |
Format1_4 | Format2_2 | 2 |
Поскольку первые 3 записи имеют один и тот же идентификатор в формате 2, они сгруппированы вместе и назначены один и тот же идентификатор группы.
Последняя запись не связана с драгоценными тремя записями. Он рассматривается как одна группа.
Я пытался использовать HashMap (String, Int) для сопоставления каждого идентификатора формата с соответствующим идентификатором группы, но, поскольку этот HashMap не распределен по узлам, другие рабочие узлыне удалось прочитать ранее вставленные значения карты.
Я новичок в Spark и хотел бы знать, как я могу реализовать эту проблему группировки в Spark?