Spark 的 ALS 中唯一项目的数量有啥限制?
Posted
技术标签:
【中文标题】Spark 的 ALS 中唯一项目的数量有啥限制?【英文标题】:What is the limit to the number of unique items in Spark's ALS?Spark 的 ALS 中唯一项目的数量有什么限制? 【发布时间】:2017-11-01 12:41:17 【问题描述】:我正在为一个工作项目使用 Spark 的 ALS 推荐器实现,并且围绕它如何处理规模进行了很多讨论。但不是事件的数量,而是产品目录中items的数量。
我担心 Spark RowMatrix
对象在分解任务中可以处理的列数有硬性限制 (~65,500)。显然,ALS 采用RDD
形式的稀疏矩阵:
sc.parallelize([(usr, itm, rtg), (usr2, itm2, rtg)])
但是,我在任何地方都找不到任何关于它是否在后端构建密集矩阵的讨论,因为 > 65k 个项目,我可能会遇到列限制。是否有任何关于 Spark ALS 实施的实际限制的讨论或文档?
【问题讨论】:
【参考方案1】:基本上RowMatrix.computePrincipalComponents
与进程完全无关。 ml.ALS
不使用 mllib.linalg
数据结构。 ml.ALS
使用自己的分块算法。
理论限制是标识符的范围(Int
或 Long
取决于专业化),但我怀疑它是否曾针对这样的数据集进行过测试。
【讨论】:
感谢您的跟进。computePrincipalComponents
函数是链接,因为它提到了列限制。我知道它没有在分解过程中使用,只是想指出一些引用 65k col 限制的文档。不过,我不知道分块算法。这在一定程度上让我放心……但我想负载测试是这里唯一的答案?以上是关于Spark 的 ALS 中唯一项目的数量有啥限制?的主要内容,如果未能解决你的问题,请参考以下文章
深入理解Spark ML:基于ALS矩阵分解的协同过滤算法与源码分析