Spark Dataframe Group By Operation и выбор N значений из каждой группы - PullRequest
0 голосов
/ 05 июля 2019

У меня есть искровой фрейм данных следующей структуры:

Operation|RequestURL|RequestBody|IsGetRequest|IsPostRequest

и переменная: val n = 100

Я хочу выполнить Group-by в столбце Operationв кадре данных.Затем я хочу получить RequestURL и RequestBody столбцы для n запросов (без упорядочения) в каждой из этих групп (создайте новый data-frame/rdd/map этого).Если в группе меньше n запросов, я хочу продублировать некоторые строки в этой группе, чтобы обеспечить одинаковое количество запросов, которые я получаю из каждой группы.

Нужна помощь в выяснении, как это можно сделатьбыть сделано оптимизированным способом.Я открыт для использования любого языка (python/scala), а также преобразую фрейм данных в панды или хэш-карту ключей и значений, если это невозможно сделать с помощью spark data-frame.

Iвидели какое-то решение по переполнению стека с использованием группировки и упорядочения, а затем с помощью функции разделения Windows, чтобы получить значения topN.Чем отличается мой вопрос - для моего случая нет ordering.Также я хочу обеспечить fetching equal number of requests от каждой группы.

1 Ответ

0 голосов
/ 08 июля 2019

Решено с помощью функции Windows Partition. Затем последовало преобразование результирующего набора данных в карту [String, List (Strings)] с использованием функций groupBy () и toMap, обход карты и репликацию строк с помощью операций со списком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...