Люди,
Требуется предложение и помощь в группировке логики и обработке более 10 миллионов записей. Обработка должна быть сделана путем группировки по идентификатору. Каждая группа должна быть введена в forEach или map, и метод преобразования должен быть вызван для каждой группы. Группа может содержать 10-500 записей |
| ID2 | senderID | targetID | app |
+-------------+--------------------+--------------------+-------+
|1 | FG| OM| R-type|
|1 | FG| OM| R-type|
|1 | DMA.3.450.5|SILO303.FG.RECV.3...| FRD|
|2 | OM| FG| F-Type|
|3 | EFG-NY| ETP2EFG| EFG|
|3 |SILO303.FG.RECV.3...| DMA.3.450.5| FRD|
|2 | OM| FG| F-Type|
|3 | NEXTGEN_CA| E-Type| EFG|
|2 | DMA.3.450.5|TSX.FG.ROUT.3.500.57| FG|
+-------------------+--------------------+--------------------+--
Итак, ID2 - это кулон, по которому мне нужно сгруппировать свои записи. Мне нужно сделать группы в соответствии с ID2, как показано ниже, и передать метод преобразования по одному.
finalFeed.rdd.map(Groups => (transform(Groups))).collect.toList
Но я не думаю, что есть способ сделать это. Поскольку передача данных в методы в цикле не выполняется на драйверах.
Какие есть варианты для обхода такой ситуации.
Группы, которые я передаю моему методу transform(Groups)
, будут далее группироваться в соответствии с senderID, targetID, app, а затем фильтроваться, и все будет происходить, чтобы увидеть, является ли группа действительной или нет.
Должен ли я преобразовать этот DF в некоторую коллекцию, а затем перейти к моему методу преобразования. Но тогда я не смогу применить фильтр и все, поскольку они являются методами данных.
Нужна помощь, ребята. Заранее спасибо.