当前位置 : 首页 » 互动问答 » 正文

来自卡夫卡流的火花申请需要很长时间才能提出建议

分类 : 互动问答 | 发布时间 : 2018-04-27 15:26:13 | 评论 : 1 | 浏览 : 21 | 喜欢 : 0

我正在阅读来自kafka流的spark应用程序中的数据流。我的要求是当用户提出任何请求(搜索/浏览等)时为用户产生产品推荐。

我已经有一个训练有素的包含用户分数的模型。我正在使用Java和org.apache.spark.mllib.recommendation.MatrixFactorizationModel模型在我的Spark应用程序启动时读取模型。每当有任何浏览事件时,我都会调用recommendProducts(user_id,num_of_recommended_products)API来从我现有的训练模型中为用户提供建议。

此API需要约3-5秒的时间才能生成每个用户非常慢的结果因此我的流处理滞后。有什么方法可以优化此API的时间?我正在考虑将流时间从15秒增加到1分钟作为优化(现在不确定其结果)

回答(1)

  • 1楼
  • Calling recommendProductsForUser 实时,没有多大意义。由于ALS模型只能对训练数据集中出现的用户进行预测,因此最好如果添加存储层不是一个选项,您还可以输出一次,并将输出存储在支持通过键进行第一次查找的存储中,并在需要时从中获取结果。 notranslate> recommendProducts

    ,通过id,检查点和高速缓存预测进行分区,然后通过id输入流recommendProductsForUser。< notranslate> recommendProductsForUserjoin with input stream by id.

相关阅读: