我正在尝试在AWS EMR集群上运行Mahout ALS建议,但是它花费的时间比我预期的要长得多。
以下是我运行的命令:
aws add-steps --cluster-id <cluster_id> \
--steps Type=CUSTOM_JAR,\
Name="Mahout ALS Factorization Job",\
Jar=s3://<my_bucket>/recproto/mahout-mr-0.10.0-job.jar,\
MainClass=org.apache.mahout.cf.taste.hadoop.als.ParallelALSFactorizationJob,\
Args=["--input","s3://<my_bucket>/recproto/trainingdata/userClicks.csv.gz",\
"--output","s3://<my_bucket>/recproto/als-output/",\
"--implicitFeedback","true",\
"--lambda","150",\
"--alpha","0.05",\
"--numFeatures","100",\
"--numIterations","3",\
"--numThreadsPerSolver","4",\
"--usesLongIDs","true"]
在userClicks.csv文件中,存在 1,567,808个评分,来自的335,636个用户和 23,934个项目。
该作业在 10-c3.xlarge节点EMR群集上运行,并且该作业已经运行了两个多小时。我想知道这正常吗?就我的评级文件而言,我应该使用哪种规模的EMR群集和参数,以便获得更可接受的运行时间?
最佳答案
我仅使用Spark ALS就解决了这个问题。训练过程在具有相同参数的同一数据集上花了不到2分钟在MY LAPTOP 上。
我现在可以理解为什么由于性能问题而弃用某些机器学习算法...(例如Minhash算法)