pyspark TypeError:__ new __()需要4个参数(给定2个)

时间:2017-01-14 05:54:58

标签: python pyspark recommendation-engine

我使用spark 2.1.0。在下面的代码中我加载了评级数据。每行包含用户,产品和评级。我使用默认的ALS.train()方法,该方法假设评级是显式的,但它捕获异常如下:

 File "/home/ubuntu/Downloads/spark-2.1.0/python/pyspark/mllib/recommendation.py", line 233, in <lambda>
        ratings = ratings.map(lambda x: Rating(*x))
    TypeError: __new__() takes exactly 4 arguments (2 given)

在文档中,pyspark.mllib.recommendation模块提供代码为

 r1 = (1, 1, 1.0)
 r2 = (1, 2, 2.0)
 r3 = (2, 1, 2.0)
 ratings =sc.parallelize([r1, r2, r3])
 model = ALS.trainImplicit(ratings,1, seed=10)
 model.predict(2, 2)

但是当我更改代码时效果不佳,错误仍然存​​在。 代码如下

from pyspark.mllib.recommendation import Rating, ALS
  rawData = sc.textFile("/user/hadoop/ratings.dat")
  def gx(x):
     ratings=[]
     for item in x:
       q=item.split("::")
       ratings.append(Rating(int(q[0]),int(q[1]),float(q[2])))
      return ratings
  ratings = rawData.map(lambda l:gx(l))



model = ALS.train(ratings, 50, 10, 0.01)

如何在pyspark中使用ALS.train

0 个答案:

没有答案