我有一个包含多行的 Dataframe ,如下所示:df.head()给出:
Row(features=DenseVector([1.02, 4.23, 4.534, 0.342]))
现在我想在 Dataframe 上计算columnSimilarities(),我执行以下操作:
rdd2 = df.rdd
mat = RowMatrix(rdd2)
sims = mat.columnSimilarities()
但是,我得到了以下错误:
File "/opt/apache-spark/spark-3.2.1-bin-hadoop3.2/python/lib/pyspark.zip/pyspark/mllib/linalg/__init__.py", line 67, in _convert_to_vector
raise TypeError("Cannot convert type %s into Vector" % type(l))
TypeError: Cannot convert type <class 'pyspark.sql.types.Row'> into Vector
有人能帮我一下吗?谢谢!
1条答案
按热度按时间efzxgjgh1#
当前的rdd形式为:
根据official documentation中的示例,如果我们以以下形式获取它,它将工作:
将行矩阵构造为:
下面是一个完整的示例,它报告并修复了您的问题: