Как вызвать функцию квадрата расстояния на двух столбцах в pyspark? - PullRequest
0 голосов
/ 13 декабря 2018

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

+--------------------+--------------------++-------------
|            feature1|            feature2| domain    |
+--------------------+--------------------++-------------
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain1   | 
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain2   |
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain1   |
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain2   |
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain1   |

Схема фрейма данных такая:

|-- domain: string (nullable = true)
|-- feature1: vector (nullable = true)
|-- feature2: vector (nullable = true)

Столбцы feature1 и feature2 имеют тип Vector.Dense.Я хочу рассчитать квадрат расстояния.Я пробовал так:

all_pairs_df.withColumn(
    "distance",
    Vectors.squared_distance(all_pairs_df.feature2, all_pairs_df.feature1)
).show()

Но я получаю сообщение об ошибке, есть идеи, как добиться этого в pyspark без использования udf, который в конечном итоге вызывает BatchEvalPython?

...