【发布时间】:2016-02-21 09:19:31
【问题描述】:
我们在 Azure Spark 上使用 ALS 来构建我们的推荐系统。
由于计算能力的原因,我们无法为每个用户输出不同的推荐列表。因此,我们将用户划分为集群,并使用 ALS 为每个单独的集群质心输出推荐列表。
在对用户进行聚类之前,我们在 Spark 上使用标准缩放器和规范化器对数据进行预处理,以获得更好的聚类结果。但是,这在使用 ALS.trainImplicit 时会导致以下异常
15/11/16 15:43:11 INFO TaskSetManager:在执行程序 localhost 的阶段 15.0(TID 197)中丢失任务 30.0:java.lang.AssertionError(断言失败:lapack.dppsv 返回 4。)[重复 9] 回溯(最近一次通话最后): 文件“/home/rogeesjir_huasqngfda/woradofkapkspace/jigsusLaudfadfecher/scripts/RecommendationBackend/AzureSpark/src/collaborativeFiltering/spark_als.py”,第 92 行,在 主要的() 文件“/home/rogeesjir_huasqngfda/rogeesjir_huasqngfda/jigsusLaudfadfecher/scripts/RecommendationBackend/AzureSpark/src/collaborativeFiltering/spark_als.py”,第 39 行,主要 模型 = ALS.trainImplicit(评级,排名,numIter,alpha=0.01) trainImplicit 中的文件“/home/jigsusLaudfadfecher/spark-1.3.1-bin-hadoop2.6/python/pyspark/mllib/recommendation.py”,第 147 行 2016 年 15 月 11 日 15:43:11 信息 TaskSetManager:在执行程序 localhost 的阶段 15.0(TID 192)中丢失任务 25.0:java.lang.AssertionError(断言失败:lapack.dppsv 返回 4。)[重复 10] 迭代,lambda_,块,阿尔法,非负,种子) 文件“/home/jigsusLaudfadfecher/spark-1.3.1-bin-hadoop2.6/python/pyspark/mllib/common.py”,第 120 行,在 callMLlibFunc 返回调用JavaFunc(sc, api, *args) 文件“/home/jigsusLaudfadfecher/spark-1.3.1-bin-hadoop2.6/python/pyspark/mllib/common.py”,第 113 行,在 callJavaFunc 返回 _java2py(sc, func(*args)) 调用中的文件“/home/jigsusLaudfadfecher/spark-1.3.1-bin-hadoop2.6/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py”,第 538 行强> 文件“/home/jigsusLaudfadfecher/spark-1.3.1-bin-hadoop2.6/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py”,第 300 行,在 get_return_value py4j.protocol.Py4JJavaError15/11/16 15:43:11 INFO TaskSetManager:在执行程序 localhost 的阶段 15.0(TID 183)中丢失任务 16.0:java.lang.AssertionError(断言失败:lapack.dppsv 返回 4。)[重复 11 ]
:调用 o39.trainImplicitALSModel 时出错。 :org.apache.spark.SparkException:作业因阶段失败而中止:阶段 15.0 中的任务 8 失败 1 次,最近一次失败:阶段 15.0 中丢失任务 8.0(TID 175,本地主机):java.lang.AssertionError:断言失败:lapack.dppsv 返回 4。 在 scala.Predef$.assert(Predef.scala:179) 在 org.apache.spark.ml.recommendation.ALS$CholeskySolver.solve(ALS.scala:355) 在 org.apache.spark.ml.recommendation.ALS$$anonfun$org$apache$spark$ml$recommendation$ALS$$computeFactors$1.apply(ALS.scala:1131) 在 org.apache.spark.ml.recommendation.ALS$$anonfun$org$apache$spark$ml$recommendation$ALS$$computeFactors$1.apply(ALS.scala:1092) 在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$mapValues$1$$anonfun$apply$15.apply(PairRDDFunctions.scala:674) 在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$mapValues$1$$anonfun$apply$15.apply(PairRDDFunctions.scala:674) 在 scala.collection.Iterator$$anon$11.next(Iterator.scala:328) 在 org.apache.spark.storage.MemoryStore.unrollSafely(MemoryStore.scala:249) 在 org.apache.spark.CacheManager.putInBlockManager(CacheManager.scala:172) 在 org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:79) 在 org.apache.spark.rdd.RDD.iterator(RDD.scala:242) 在 org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:35) 在 org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277) 在 org.apache.spark.rdd.RDD.iterator(RDD.scala:244) 在 org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61) 在 org.apache.spark.scheduler.Task.run(Task.scala:64) 在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745)
当我们删除“正则化”组件(即不做标准缩放器和规范器)时,一切正常。 顺便说一句,即使我们在 ALS 模型训练之前对数据进行正则化,ALS.train() 调用显式评分也可以正常工作。
有人遇到过这种问题吗? 我们还是新手,所以请帮忙!谢谢。
【问题讨论】:
-
您能提供您的代码和示例数据集吗?该错误可能看起来好像在工作人员上运行了不应该运行的代码。 Spark 集群的配置细节也会有所帮助。