A distributed matrix factorization approach to collaborative filtering