我试图在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文件中,有来自335636个用户和23934个项目的1567808个评级。
作业在10-c3.xlarge nodes emr集群上运行,并且作业已运行超过2小时。我想知道这正常吗?在我的评级文件的情况下,我应该使用哪种规模的电子病历集群和参数,以便我可以得到一个更可接受的运行时间?
1条答案
按热度按时间z5btuh9x1#
我通过简单地使用spark als解决了这个问题。训练过程花在我的笔记本电脑上的时间不到2分钟,在同一个数据集上使用相同的参数。
我现在可以理解为什么一些机器学习算法由于性能问题而被弃用…(例如,minhash算法)