Pypark RankingMetrics错误';ImportError:没有名为numpy';

Pypark RankingMetrics错误';ImportError:没有名为numpy';,numpy,pyspark,apache-spark-mllib,Numpy,Pyspark,Apache Spark Mllib,我运行一个ALS推荐模型(558K用户,大约300种产品)。通过使用recommendProductsForUsers调用,我为每个用户获得了前十名推荐。 为了计算RankingMetrics,我需要以(userID,[10个产品id的数组])的形式获得它,然后将它与用户的实际评分(userID,[使用的产品列表])结合起来 但是,当我运行“recommendProductsForUsers(10)”并尝试使用它时,我总是遇到pysaprk错误“ImportError:没有名为numpy的模块”

我运行一个ALS推荐模型(558K用户,大约300种产品)。通过使用recommendProductsForUsers调用,我为每个用户获得了前十名推荐。 为了计算RankingMetrics,我需要以(userID,[10个产品id的数组])的形式获得它,然后将它与用户的实际评分(userID,[使用的产品列表])结合起来

但是,当我运行“recommendProductsForUsers(10)”并尝试使用它时,我总是遇到pysaprk错误“ImportError:没有名为numpy的模块”,这与我在pyspark中使用numpy时没有问题不同。 这更像是“资源不足错误”?(工人使用8g,守护进程使用8g,驱动程序使用8g)

是否有更好/更有效的方法将推荐产品供应商(10)的输出重塑为RankingMetrics所需的RDD?我做错了什么? 在官方文档中只有一个scala示例,给出的pyspark示例显示了错误的度量(回归度量)。见:

守则:

# RankingMetrics on VALIDATION + TEST set
# Get recommendations per user (top-n list) 
# Need to collect() immediately or resource/numpy error !  Then parallelize 
again into an RDD for remap/join 

t0_adv=time()
userRecommended = bestModel.recommendProductsForUsers(n).collect()
userRecommended_RDD = sc.parallelize(userRecommended)\
                         .map(lambda (k,v): (k, [x[1] for x in v]))

# Get the actual usage
userMovies = validation_RDD.groupBy("new_uid")\
    .agg(F.collect_set("new_pgm")\
    .alias("actualVideos")).rdd

# join into a prediction vs actual RDD
predictionsAndLabels = userRecommended_RDD.join(userMovies).cache()

# Get the metrics
metricsRank = RankingMetrics(predictionsAndLabels.map(lambda r: r[1]))
tt_adv = time() - t0_adv

print "Time required : %.0f" % tt_adv
print "p5   %.8f" % metricsRank.precisionAt(5)
print "MAP  %.8f" % metricsRank.meanAveragePrecision
print "nDCG %.8f" % metricsRank.ndcgAt(5)

此错误与Numpy未安装在工作计算机或其中一台工作计算机中有关。另一个原因可能是,如果您在workers中使用Anaconda,并且
PYSPARK_PYTHON
不是安装了Numpy的正确PYTHON路径。感谢您的快速回答,我将检查Anaconda&PYSPARK_PYTHON路径。我已经检查了所有工人,他们在/opt/cloudera/parcels/Anaconda/lib/python2.7/site-packages/Numpy目录中都有Numpy 1.11.1。您的问题是否可以与此重复?