使用Spark生成的mllib模型作为服务器的最佳实践

时间:2016-10-14 16:55:42

标签: apache-spark pyspark apache-spark-mllib

我试图找出使用Spark + MLlib生成的模型(在这种情况下是协作过滤推荐引擎)以正确的方式快速,按需和作为服务器提供预测的正确方法。

我目前的解决方案是为此目的连续运行Spark实例,但我想知道是否有更好的解决方案,也许是一个不需要运行Spark的解决方案。也许有一种方法可以在不涉及Spark的情况下加载和使用Spark生成的模型?

2 个答案:

答案 0 :(得分:0)

您可以通过pmml导出模型,然后获取该模型并在另一个应用程序中使用它。

答案 1 :(得分:0)

现在我找到了方法。首先,我们可以通过model.productFeatures() and Model.userFeatures()

保存als模型的product_features和user_feaures

然后我们获得这样的产品功能

209699159874445020 
0.0533636957407,-0.0878632888198,0.105949401855,0.129774808884,0.0953511446714,0.16420891881,0.0558457262814,0.0587058141828

因此,我们可以在python中将产品功能和用户功能加载到两个dicts中,并通过龙卷风制作服务器以使用这两个dicts来预测评级。我将展示代码。

def predict(item_id, user_id):
    ind = item_id_index[item_id]
    gf =  goods_features[ind,1:]
    ind = user_id_index[user_id]
    uf = user_features[ind,1:]
    return blas.ddot(gf,uf,len(gf),0,1,0,1)

作为结论。我们需要自己坚持als模型,并不像我们想象的那么困难。欢迎任何建议。