Учитывая набор данных, представляющий древовидную иерархическую структуру, например:
+-------+--------+
|childId|parentId|
+-------+--------+
| 1| 0|
| 2| 1|
| 3| 1|
| 4| 2|
| 5| 2|
| 6| 2|
| 7| 3|
| 8| 3|
| 9| 3|
| 10| 4|
+-------+--------+
Как его можно агрегировать, используя Spark
?Таким образом, для каждого узла Дерева все его дочерние элементы, внуки и т. Д. (До листьев) могут быть агрегированы:
+--------+--------------------+-----+
|parentId| children|count|
+--------+--------------------+-----+
| 1|[15, 9, 16, 2, 17...| 16|
| 3|[15, 9, 16, 17, 7...| 7|
| 4| [12, 13, 10, 11]| 4|
| 7| [15, 16, 17, 14]| 4|
| 2|[12, 13, 5, 6, 10...| 7|
| 0|[15, 9, 1, 16, 2,...| 17|
+--------+--------------------+-----+
Пример файла данных можно найти здесь .