python - Spark - 将 DataFrame 转换为 RowMatrix 以有效计算所有对的相似度

标签 python apache-spark pyspark apache-spark-mllib recommendation-engine

我有一个大的 DataFrame,其中充满了用户和项目之间的关系,如下所示:

        item1  item2
user1       0      1
user2       1      0

并且想要有效地解决所有对的相似性问题。

我发现如果我使用 RowMatrix 对象,我可以使用 pyspark.mllib 模块的 columnSimilarities 方法。

由于我想出的使用 DataFrame 解决此问题的每种方法似乎效率都很低,我想知道获得 RowMatrix 的最佳方法来 self 的DataFrame

或者,在最好的情况下,如果我遗漏了一些东西,并且有更好的方法来使用DataFrame来面对所有对的相似性问题,我很想听听。

最佳答案

正如其他答案中提到的,无法直接将 DataFrame 转换为 RowMatrix。您首先需要获取一个RDD对象。

在 Python 上执行此操作:

your_rdd = your_dataframe.rdd.map(list)
your_rowmatrix = RowMatrix(your_rdd)

关于python - Spark - 将 DataFrame 转换为 RowMatrix 以有效计算所有对的相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52992734/

相关文章:

scala - Spark - 如何将 rdd 的前 N ​​个作为新的 rdd(无需在驱动程序处收集)

python - 如何从 PySpark DStream 写入 Redis?

pyspark - 使用 Pyspark 的 HIVE JDBC 连接将列名称返回为行值

Python二维数组——改变一个元素

python - 使用 numpy 数组和共享内存并行化 python 循环

python - 使用 NumPy 。关于数字或替代数组的 binary_repr - Python

apache-spark-sql - 如何计算 pyspark dataframe 中的每日基础(时间序列)

python - 如何在 Jupyter 笔记本的同一单元格中包含多个交互式小部件

asynchronous - 用于折叠、减少、聚合的 Spark 异步接口(interface)?

sorting - 如何在spark中合并两个预排序的rdd?