Spark - Как выполнить сведение в определенной иерархии, где родительский элемент отсутствует в наборе данных - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь создать приложение Spark для выполнения агрегации на иерархическом наборе данных.

Пример сценария выглядит следующим образом.

У меня есть набор данных, содержащий следующие строки enter image description here

У меня есть иерархия категорий, определенных в моей базе данных.Моя иерархия выглядит следующим образом:

enter image description here

Мне нужен агрегированный результат для каждого из этого элемента в иерархии категорий.

Аналогично этомуМне нужен счетчик для всех элементов в узлах иерархии.

Ожидаемый результат:

enter image description here

1 Ответ

0 голосов
/ 18 декабря 2018

Я предполагаю, что «родительский элемент», которого нет, равен 4002, учитывая его в вашей иерархии, а не в ваших входных данных, а в ваших выходных данных.Если нет, вам действительно нужно быть более конкретным.

В любом случае вы должны прочитать набор данных «иерархия» во второй фрейм данных и присоединить его к первому фрейму данных.Но вы должны убедиться, что он подготовлен правильно.

Хорошим подходом было бы немного денормализовать иерархию.Преврати это в:

Категория |Родительская категория

Таким образом, категория 4020 будет иметь 3 строки:

Category | Parent Category
4020     | 4015
4020     | 4002
4020     | 4000

Затем, после присоединения к этому ваших данных, вы можете выполнить простую агрегацию / сумму по родительской категории и дате длякаждый столбец значений.

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