Расчет евклидовых расстояний между всеми строками в PySpark
У меня есть PySpark DataFrame, как:
ID | x | y
------------------
3 | 45 | 56
6 | 32 | 34
9 | 12 | 43
Я должен рассчитать матрицу расстояний, используя евклидово расстояние sqrt((x-x0)^2 + (y-y0)^2)
между каждой парой точек х и у и остальными.
В выводе я хочу новый DF, как это:
ID | 3 | 6 | 9
-----------------------------
3 | 0.0 | 25.5 | 35.5
6 | 25.5 | 0.0 | 21.9
9 | 35.5 | 21.9 | 0.0
где у меня будет столько столбцов и строк, сколько и идентификаторов (например, матрицы).
Как я могу сделать это в PySpark эффективно?
Заранее спасибо.