我對Spark的ALS建議有問題。我想預測我的系統中的用戶使用以下代碼的產品Spark ALS Model廣播
users = ... # RDD definition here
als_model = ... # trained ALS model
recommendations = [als_model.recommendProducts(u, 5) for u in users.collect()]
這段代碼的問題是,它並沒有真正並行化。 我寧願像
recommendations = users.map(lambda u: als_model.recommendProducts(u, 5))
不幸的是這是不可能的,因爲我不能使用星火行動的內部als_model。
對我的另一種選擇是執行
als_model.recommendProductsForUsers(1000)
這將返回前1000個產品爲所有用戶(這是我儘量做到;)) 但這種方法消耗的方式來過多內存,並在結束我得到一個GC錯誤,因爲堆空間溢出。
有沒有人有一個想法如何儘可能有效地解決這個問題?
你正在使用哪種火花版本? – eliasah