Перехват и обработка промежуточного искрового выхода - PullRequest
0 голосов
/ 12 апреля 2019

Предположим, у меня есть SQL-запрос, подобный следующему:

SELECT team, MAX(score) FROM mytable GROUP BY team;

Под капотом, я предполагаю, что Spark преобразует это в план запроса, который представляет собой некоторое сканирование таблицы с последующей проекцией, сгруппировав строкив сегменты с team в качестве ключа и агрегацию в каждом сегменте.

Я хотел бы иметь возможность перехватывать промежуточный вывод сразу после группы, но до максимальной агрегации.После некоторой пользовательской обработки с этой промежуточной структурой данных (возможно, некоторой оберткой вокруг RDD) я хотел бы перенести ее на следующий этап (максимальное агрегирование).Возможно ли это?

Потенциальная причина, по которой я хочу это сделать, связана с соображениями безопасности - я могу захотеть отфильтровать или преобразовать некоторые данные на этом этапе до окончательной агрегации.Я понимаю, что это может изменить семантику SQL-запроса, но давайте проигнорируем это для этого конкретного вопроса.

...