У меня очень простой фрейм данных в pyspark, что-то вроде этого:
from pyspark.sql import Row
from pyspark.mllib.linalg import DenseVector
row = Row("a", "b")
df = spark.sparkContext.parallelize([
offer_row(DenseVector([1, 1, 1]), DenseVector([1, 0, 0])),
]).toDF()
, и я хотел бы вычислить скалярное произведение этих векторов, не прибегая к вызову UDF.
Документация spark MLLIB ссылается на метод dot
для DenseVectors
, но если я попытаюсь применить его следующим образом:
df_offers = df_offers.withColumn("c", col("a").dot(col("b")))
Я получаю ошибки, подобные:
TypeError: 'Column' object is not callable
Кто-нибудь знает, можно ли вызывать эти методы mllib для объектов DataFrame?